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

时间:2015-05-15 07:31:48

标签: javascript build dependencies gulp

我有以下任务

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.rungulp.start的唯一方式?

2 个答案:

答案 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']);
});

非常方便!