【问题标题】:Gulp reports tasks in incorrect orderGulp 以错误的顺序报告任务
【发布时间】:2016-11-29 19:58:20
【问题描述】:

使用 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 方式? ...或者我是否以完全错误的方式思考这个问题?

【问题讨论】:

    标签: gulp


    【解决方案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 的设计方式,可能会影响大型项目的性能。

    【讨论】:

    • 谢谢。好的答案,只是不是我所希望的:-p。我知道 gulp 是并行运行的,而使用 run-sequence 会以串行方式运行它们,这会影响性能。 IMO,以“gulp 方式”执行它会使输出或多或少无用,因为看起来任务没有按指定的顺序运行。当运行大量可能有自己的输出的任务(例如运行测试或安装包)时,这尤其令人困惑。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多