完成其他任务后运行gulp任务

nvi*_*oli 3 javascript synchronous gulp

我有两个文件集,让我们称他们basemods.该mods文件覆盖base文件,所以当我运行相关一口任务base,我需要运行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'))
});
Run Code Online (Sandbox Code Playgroud)

所以我想mods在完成任务时运行base任务.请注意,这与定义base为依赖关系不同mods,因为如果我只更改mods文件,我只需要运行mods任务.我不想使用插件.

我一直在阅读有关回调函数和同步任务的其他建议的文档,但似乎无法理解它.

Jak*_*son 7

我知道你不想使用插件,但gulp无法在没有插件的情况下按顺序运行一系列任务.Gulp 4会,但与此同时,权宜之计解决方案是运行序列插件.

gulp.task('all', function() {
  runSequence('base', 'mods');
});
Run Code Online (Sandbox Code Playgroud)

这可确保任务按顺序运行,而不是无序依赖.

现在设置一个手表:

gulp.task('watch', function() {
    gulp.watch('base-glob', ['all']);
    gulp.watch('mods-glob', ['mods']);
});
Run Code Online (Sandbox Code Playgroud)

每当base-glob更改时,gulp将运行all任务,base然后运行序列mods.

每当mods-glob改变时,gulp将只运行mods任务.

听起来不对劲?