我有两组文件,让我们称它们为base和mods. mods文件覆盖基本文件,所以当我运行与base相关的gulp任务时,我需要在之后直接运行mods任务.我的设置是这样的:
gulp.task('base',function(){
return gulp.src('base-glob')
.pipe(...)
.pipe(gulp.dest('out-glob'))
});
gulp.task('mods',function(){
return gulp.src('mods-glob')
.pipe(...)
.pipe(gulp.dest('out-glob'))
});
所以我想在完成基本任务时运行mods任务.请注意,这与将base定义为mods的依赖项不同,因为如果我只更改mods文件,我只需要运行mods任务.我不想使用插件.
我一直在阅读有关回调函数和同步任务的其他建议的文档,但似乎无法理解它.
解决方法:
我知道你不想使用插件,但gulp无法在没有插件的情况下按顺序运行一系列任务. Gulp 4 will,但与此同时,权宜之计解决方案是run-sequence插件.
gulp.task('all', function() {
runSequence('base', 'mods');
});
这可确保任务按顺序运行,而不是无序依赖.
现在设置一个手表:
gulp.task('watch', function() {
gulp.watch('base-glob', ['all']);
gulp.watch('mods-glob', ['mods']);
});
每当base-glob改变时,gulp将运行所有任务,这将运行序列库然后mods.
每当mods-glob改变时,gulp将只运行mods任务.
听起来不对劲?