忽略 gulp.js 中的任务依赖性

Ignoring task dependencies in gulp.js

我有以下任务

gulp.task('sass-build', ['clean-build'], function () {
    // do stuff
});

这显然需要 clean-build 在开始之前完成。但是,我也想在没有 clean-build 依赖项的情况下将此任务与 gulp.watch 一起使用。

我知道您可以使用 Skipping Tasks Listed as Dependencies in Gulp 中建议的辅助任务来解决此问题,但这需要使用 gulp.run(已弃用)或 gulp.start(已弃用)甚至没有记录,因为它被认为是不好的做法)。

执行此操作的更好方法是什么?或者是使用 gulp.rungulp.start 的唯一方法?

我使用 run-sequence 解决了这个问题。这也让整个多任务的顺序更加清晰。

我所做的就是从 sass-build 中删除 clean-build 依赖项。所以最终:

gulp.task('sass-build', function () {
    // do stuff
});

gulp.task('build', function () {
    runSequence('clean-build', [..., 'sass-build', ...], 'index-build');
});

gulp.task('watch', function () {
    gulp.watch('src/sass/*', ['sass-build']);
});

非常方便!

链接问题中显示的方法实际上还不错。除了 gulp.run 你可以使用简单的函数来做同样的事情:

var sassFunction = function() {
    return gulp.src('blahbla')
        .pipe(bla())
}

gulp.task('sass-build', ['clean-build'], function () {
    return sassFunction()
});

gulp.task('sass-dev', function () {
    return sassFunction();
});


gulp.task('watch', function() {
    gulp.watch('your/sass/files/**/*.scss', ['sass-dev'])
});

您的其他方法也不错,将与 Gulp 4.

完全结合
gulp.task('default', gulp.series('clean-build', gulp.parallel('sass-build')));

需要注意的地方,因为它完全改变了依赖关系树。