现在已经使用Gulp(3.9.0)了一段时间并且很喜欢它,但是有一个方面的问题让我烦恼。想知道我是做错了什么,或者以错误的方式思考功能。
假设我有这样的任务:
gulp.task("build", ["build-js", "build-css"]);
我得到这样的输出:
Starting 'build-js'...
Finished 'build-js' after 22 μs
Starting 'build-css'...
Finished 'build-css' after 2.48 μs
Starting 'build'...
Finished 'build' after 2.09 μs
...因为'build-js'和'build-css'是依赖项,而不是子任务。
但是,我想要一个像这样的输出:
Starting 'build'...
Starting 'build-js'...
Finished 'build-js' after 22 μs
Starting 'build-css'...
Finished 'build-css' after 2.48 μs
Finished 'build' after 26.57 μs
...因为从我的角度来看,build-js和build-css应该是子任务。
我可以通过以下方式获得此功能:
gulp.task("build", () => {
gulp.start("build-js", "build-css");
});
...但是gulp背后的人不希望我们使用start方法。
2014年有一个类似的问题:Gulp tasks from within other Gulp tasks?但它并没有得到太多的爱。大多数情况下,我对此感兴趣,因为我在构建任务中运行了大约20个不同的“子任务”,所有这些“子任务”都是通过依赖关系链接的,输出顺序令人困惑。
总结一下...... 有没有更好的方法来获得我想要的功能,更多的是gulp方式? ......或者我是以完全错误的方式思考这个问题?
答案 0 :(得分:1)
这是任务执行的顺序,它只是Gulp做事的方式。如果两个任务之间没有依赖关系,他们将尽快开始。据我所知,改变打印顺序的唯一方法是实际更改任务的顺序。您可以使用run-sequence执行此操作。这个任务:
gulp.task('build', function (callback) {
return runSequence('build-js', 'build-css', callback);
});
...会产生此输出:
Starting 'build'...
Starting 'build-js'...
Finished 'build-js' after 25 ms
Starting 'build-css'...
Finished 'build-css' after 2.02 ms
Finished 'build' after 30 ms
但我不会特别推荐它。它违背了Gulp的设计方式,可能影响大型项目的性能。