h b*_*bob 1 javascript node.js gulp
我正在关注官方文档,但我的gulp任务没有按顺序运行.
gulp.task("mytask", ["foo", "bar", "baz"]);
gulp.task("foo", function (callback) {
gulp
.src("...")
.pipe(changed("..."))
.pipe(gulp.dest(function (file) {
// ...stuff
return "...";
}))
.on("end", function() {
// ...stuff
callback();
});
});
gulp.task("bar", function (callback) {
//...
});
gulp.task("baz", function (callback) {
//...
});
Run Code Online (Sandbox Code Playgroud)
但我的输出看起来像这样:
Starting 'mytask'...
Starting 'foo'...
Starting 'bar'... // <-- foo is not done yet!
Finished 'foo'
Finished 'bar'
Starting 'baz'...
Finished 'baz'
Finished 'mytask'
Run Code Online (Sandbox Code Playgroud)
如何让它们按顺序运行?
如果您希望它们以串行方式运行,您当前必须使用任务依赖系统,例如:
gulp.task("mytask", ["foo", "bar", "baz"]);
gulp.task("foo", function (callback) {
//...
callback(...);
});
gulp.task("bar", ['foo'], function (callback) {
//...
callback(...);
});
gulp.task("baz", ['bar'], function (callback) {
//...
callback(...);
});
Run Code Online (Sandbox Code Playgroud)
它很笨重.我认为它将在未来版本中得到解决.
根据具体情况,您可以返回承诺或事件流,而不是传入并调用回调.
我想我应该提一下,run-sequence模块现在是一个选项.但是上面说明的任务依赖系统是gulp本身目前提供的机制.请参阅此评论 re:run-sequence以及gulp中任务排序的未来.