繁体   English   中英

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

[英]Ignoring task dependencies in gulp.js

我有以下任务

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

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

我知道您可以使用帮助任务来解决此问题, 如在Gulp跳过作为依赖项列出的任务中所建议的那样 ,但这将需要使用gulp.run (已弃用)或gulp.start (甚至没有记录,因为它是被认为是坏习惯)。

有什么更好的方法呢? 还是使用gulp.rungulp.start的唯一方法?

链接问题中显示的方法实际上还不错。 除了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')));

需要注意的事情,因为它完全更改了依赖关系树。

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

我所做的就是从sass-build删除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']);
});

很方便!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM