API gulp.seq
никогда не был официальным prop
, предоставляемым Gulp. С Gulp 4 вы не можете этого сделать. gulp.tree({ /* */ })
не решит эту проблему для вас.
Сказав, что, если вам все еще нужно выяснить, выполнялась ли задача во время конвейера какой-либо другой задачи, вам придется украсить каждую задачу gulp вашей собственной оберткой, используя что-то вроде этого:
let runTasks = [];
function taskWrapper(taskName, tasks, thisTask) {
let callbackTask;
function innerCallback(cb) {
runTasks.push(taskName);
cb();
}
if (thisTask) {
callbackTask = function(cb) {
thisTask(function () {
innerCallback(cb);
});
}
} else {
callbackTask = innerCallback;
}
const newTasks = [ ...tasks, callbackTask ];
gulp.task(taskName, gulp.series(newTasks));
}
// INSTEAD OF THIS
// gulp.task('default', gulp.series('style', 'script', function () { }));
// DO THIS
taskWrapper('default', ['style', 'script'], function(cb) {
console.log('default task starting');
cb();
});
ПРИМЕЧАНИЕ. Вышеуказанные фрагменты кода имеют ограничения. Если вы используете режим наблюдения, массив, поддерживающий выполненные задачи, т.е. runTasks
будет продолжать расти. Кроме того, предполагает, что задачи всегда будут выполняться последовательно. В параллельном режиме логика немного усложняется.
Наконец, у вас также может быть задача predefault
, чтобы помочь ей в дальнейшем:
taskWrapper('predefault', [], function(cb) {
// RESET runTasks
runTasks = [];
cb();
});
taskWrapper('default', ['predefault', 'style', 'script'], function(cb) {
console.log('default task starting');
cb();
});
Также я сомневаюсь, что gulp-notify
будет работать с Gulp 4.