我有一个名为build的主要任务,在这个开发模式的任务中,我想运行观察者。
在制作期间,我不需要运行任何观察者,
gulp.task('build', cb => {
return $.runSequence(
'globals',
'inline',
'lazy',
(production ? ['empty'] : ['globals:watch', 'inline:watch', 'lazy:watch']),
cb
);
});
使用runSequence
我尝试传递false
和null
作为参数,但仍尝试将其视为任务名称。
因此,我提出的解决方案是运行一项任务,它什么都不做:
gulp.task('empty', cb => {
return cb();
});
这是正确的方法吗?它似乎只是有时工作,我不确定为什么。
任何帮助都会很棒
答案 0 :(得分:0)
我不明白为什么你的解决方案有时只能起作用。它没有任何问题,所以除非你的实际代码与你在这里发布的代码有很大不同,否则你应该没问题。
如果您想摆脱empty
任务,可以使用.concat()
构建任务数组,然后apply()
将其转换为runSequence
:
gulp.task('build', cb => {
return $.runSequence.apply(null, [
'globals',
'inline',
'lazy'
]
.concat((production) ? [] : [['globals:watch', 'inline:watch', 'lazy:watch']])
.concat(cb));
});
然而,最好的解决方案可能是使用新的ES6 spread operator。这要求您拥有at least nodejs version 5.x installed,但这会使您的任务变得非常简短和可读:
gulp.task('build', cb => {
return $.runSequence(
'globals',
'inline',
'lazy',
...(production) ? [] : [['globals:watch', 'inline:watch', 'lazy:watch']],
cb);
});