Javascript 吞咽不连续运行的任务
我在遵循官方文件,但我的吞咽任务不是连续运行的Javascript 吞咽不连续运行的任务,javascript,node.js,gulp,Javascript,Node.js,Gulp,我在遵循官方文件,但我的吞咽任务不是连续运行的 gulp.task("mytask", ["foo", "bar", "baz"]); gulp.task("foo", function (callback) { gulp .src("...") .pipe(changed("...")) .pipe(gulp.dest(function (file) { // ...stuff return "..."; })) .on("
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) {
//...
});
但我的输出如下所示:
Starting 'mytask'...
Starting 'foo'...
Starting 'bar'... // <-- foo is not done yet!
Finished 'foo'
Finished 'bar'
Starting 'baz'...
Finished 'baz'
Finished 'mytask'
正在启动“我的任务”。。。
正在启动“foo”。。。
正在启动“bar”…// 如果希望它们串联运行,则当前必须使用任务依赖系统,例如:
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(...);
});
它很笨重。我认为这将在未来的版本中得到解决
视情况而定,您可以不传入并调用回调
我想我应该提到的是,模块现在是一个选项。但是上面演示的任务依赖系统是gulp本身目前提供的机制。请参阅gulp中的re:run sequence和任务排序的未来。应更新此答案,以反映gulp 4在一系列中运行任务的方式
如果希望Gulp任务以系列方式运行,则应使用Gulp.series来运行它们,如果希望它们以并行方式运行Gulp.parallel
在使用Gulp系列时,您可以执行以下操作:
gulp.task("mytask", gulp.series(foo, bar, baz));
这些其他任务可能不再是任务,而是常量,比如
const foo = () => {
return gulp.src("...")
.pipe(changed("..."))
.pipe(gulp.dest(function (file) {
// ...stuff
return "...";
}));
}
因此,该系列列出的是常量而不是一些字符串。在迁移到gulp4时,可能会出现其他问题,但是像这样一个简单的Gulp文件的修复很容易
关于大口喝4的简单教程你不需要。如果要执行串行任务,请使用grunt
。gulp
的全部要点是并行任务(和流)。@Mathletics你完全错了。Gulp允许同步和异步。两者都有实现的方法。这个“重复”答案的可能重复并非如此。我的问题假设父任务的语法处理排序。显然不是。您需要明确重申所有相关任务的顺序,如下所示。现在已经足够在家长身上声明了。哇,这真有效。。。你说得对,它很笨重。您是否有记录这一点的参考?事件流选项似乎对我也不起作用,但您的方式起作用。您是否可以使用事件流选项取决于您在任务中所做的工作。在你的foo
任务中,/..stuff
确实发生了什么事情吗?文档非常混乱,但是请参阅我最后一段中的链接,并向下滚动到“所以这个示例看起来像这样:”。您可能还想看一看。@Mathletics最大化并发性非常好……这并不意味着您永远不需要事情串联发生。我相信gulp项目已经决定在未来的版本中促进这一点。参见和。@hbob错误的类比。你说的是过程;我说的是工具。在你的类比中,你想用一壶开水来做煎蛋,但那是煮硬蛋的工具。(这也让我印象深刻,如果你是gulp中同步操作的专家,你会问一个比“我如何在gulp中进行同步操作”更有趣的问题。)有一个用于同步操作的工具;它被称为Grunt,非常适合这个用例。