我最近从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
打印到控制台。
这是为什么?
答案 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()
})
);