我有以下任务
gulp.task('sass-build', ['clean-build'], function () {
// do stuff
});
显然需要clean-build
才能在开始之前完成。但是,我还希望将此任务与gulp.watch
一起使用,而不使用clean-build
依赖项。
我知道您可以使用Skipping Tasks Listed as Dependencies in Gulp中建议的辅助任务解决此问题,但这需要使用gulp.run
(已弃用)或gulp.start
(不是'甚至记录在案,因为它被认为是不好的做法。)
这样做的更好方法是什么?或者是使用gulp.run
或gulp.start
的唯一方式?
答案 0 :(得分:1)
在链接问题中显示的方法实际上并没有那么糟糕。而不是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')));
需要注意的事项,因为它完全改变了依赖树。
答案 1 :(得分:0)
我使用run-sequence解决了这个问题。这也使整个多任务顺序更加清晰。
我完全做的是从clean-build
删除sass-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']);
});
非常方便!