gulp的“默认”任务无需运行回调即可完成

时间:2019-06-20 13:13:19

标签: javascript gulp

我最近从gulp 3升级到了gulp 4-我有升级指南,并修改了代码以适合自己,但是我仍然有一些奇怪的行为。

这是一个可重复的小案例:

gulp.task('do-nothing', function (done) {
    setTimeout(function () {
        done()
    }, 3 * 1000)
})

gulp.task("default", gulp.parallel("do-nothing"), function (done) {
    console.log(`\n\n\nWHY AM I NOT BEING RUN`)
})

运行gulp时,输出为:

[14:10:57] Using gulpfile ~\Code\certsimple\gulpfile.js
[14:10:57] Starting 'default'...
[14:10:57] Starting 'do-nothing'...
[14:11:00] Finished 'do-nothing' after 3.01 s
[14:11:00] Finished 'default' after 3.02 s

没有WHY AM I NOT BEING RUN打印到控制台。

这是为什么?

3 个答案:

答案 0 :(得分:1)

float bf[] = { 0.f,0.f,0.f,0.f };

pDeviceContext->OMSetBlendState(m_pd3dBlendState, bf, 0xffffffff);

这就是您要寻找的功能,它是gulp.task的第三个参数,对我来说这是行不通的。同样,只有一个任务作为输入的gulp.parallel应该与tast本身相同。

答案 1 :(得分:1)

您有这行:

gulp.task("default", gulp.parallel("do-nothing"), function (done) {

请注意,它具有三个参数:字符串任务名称gulp.parallel()和一个匿名函数调用。那就是gulp3语法。这是gulp4 task函数签名:

task([taskName], taskFunction)  // note only **two** arguments.

来自gulp 4 documentation for task signature

这就是为什么您的console.log从未达到的原因。因此,您只需要将匿名函数放在gulp.parallel参数中即可对其进行修复。

gulp.task("default", gulp.parallel("do-nothing", function (done) {
    console.log(`\n\n\nWHY AM I NOT BEING RUN`)
}));

此外,由于您正在使用gulp.parallel,因此console.log不会等待do-nothing完成。

答案 2 :(得分:0)

这应该工作。

gulp.task('do-nothing', function (done) {
    setTimeout(function () {
        done()
    }, 3 * 1000)
})

gulp.task("default",

    gulp.parallel("do-nothing", function (done) {
      console.log(`\n\n\nWHY AM I NOT BEING RUN`)
      done()
    })

);