对于 gulp 4,首先创建这个辅助函数:
function gulpTaskIf(condition, task) {
task = gulp.series(task) // make sure we have a function that takes callback as first argument
return function (cb) {
if (condition()) {
task(cb)
} else {
cb()
}
}
}
- 作为它的第一个参数,这个帮助器接受一个函数形式的条件。条件函数在任务开始执行时运行,因此您可以在条件函数中检查先前步骤的输出。
- 第二个参数指定要运行的任务,可以是相同的值
gulp.parallel()
或 gulp.series()
作为参数接受,即字符串、函数引用或来自另一个gulp.parallel()
或的返回值gulp.series()
。
- 返回一个可以
gulp.task()
作为第二个参数或作为gulp.parallel()
或gulp.series()
调用的参数传递给的函数。
示例(第一个匹配问题):
- 嵌入例如 gulp.parallel() 或 gulp.series(),按名称调用任务
gulp.task('Build', gulp.parallel(
'Preprocess HTML',
'Prepeocess styles',
runTaskIf(checkSomeCondition, 'some Task')
))
function myTask() {
return gulp.src(...)
...
.dest(...)
}
gulp.task('my-task', myTask)
gulp.task('default', gulpTaskIf(
function () {
return Math.random() < 0.5; // example condition
},
'my-task')
function myTask() {
return gulp.src(...)
...
.dest(...)
}
gulp.task('default', gulpTaskIf(() => Math.random() < 0.5, myTask)
- 作为独立任务,调用 gulp.parallel() 或 gulp.series() 参考
const manyTasks = gulp.parallel(task1, task2, task3)
gulp.task('default', gulpTaskIf(
function () {
return Math.random() < 0.5;
},
manyTasks)