Недавно я обновился с gulp 3 до 4 - у меня есть руководства по обновлению, и я изменил свой код в соответствии с ним, но я все еще получаю странное поведение.
Вот небольшой воспроизводимый случай:
gulp.task('do-nothing', function (done) {
setTimeout(function () {
done()
}, 3 * 1000)
})
gulp.task("default", gulp.parallel("do-nothing"), function (done) {
console.info(`\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
.
Почему это?
Это должно работать.
gulp.task('do-nothing', function (done) {
setTimeout(function () {
done()
}, 3 * 1000)
})
gulp.task("default",
gulp.parallel("do-nothing", function (done) {
console.info(`\n\n\nWHY AM I NOT BEING RUN`)
done()
})
);
gulp.task('do-nothing', function (done) {
setTimeout(function () {
done()
}, 3 * 1000)
})
gulp.task("default", gulp.parallel("do-nothing", function (done) {
console.info(`\n\n\nWHY AM I NOT BEING RUN`)
}))
Это то, что вы ищете, функция является третьим аргументом gulp.task, который мне не подойдет. Точно так же gulp.parallel только с одной задачей в качестве входных данных должен быть таким же, как и сам вкус.
У вас есть эта строка:
gulp.task("default", gulp.parallel("do-nothing"), function (done) {
Обратите внимание, что у него есть аргументы три: строковое имя задачи, gulp.parallel() и вызов анонимной функции. Это синтаксис gulp3. Вот сигнатура функции gulp4 task
:
task([taskName], taskFunction) // note only **two** arguments.
Из gulp 4 документация для подписи task
.
Вот почему ваш console.info
никогда не достигается. Поэтому вам просто нужно поместить свою анонимную функцию в аргумент gulp.parallel
, чтобы исправить это.
gulp.task("default", gulp.parallel("do-nothing", function (done) {
console.info(`\n\n\nWHY AM I NOT BEING RUN`)
}));
Кроме того, поскольку вы используете gulp.parallel
, console.info
не будет ждать завершения do-nothing
.
попробуйте добавить возврат в
setTimeout