последовательность выполнения является наиболее понятным способом (по крайней мере, до выпуска Gulp 4.0)
С помощью run-sequence ваша задача будет выглядеть так:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
Но если вы (по какой-то причине) предпочитаете не использовать его, gulp.start
метод поможет :
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
Примечание. Если вы только запускаете задачу без прослушивания результата, develop
задача завершится раньше, чем может coffee
, и это может сбить с толку.
Вы также можете удалить прослушиватель событий, когда он не нужен
gulp.task('develop', ['clean'], function (done) {
function onFinish(event) {
if (event.task === 'coffee') {
gulp.removeListener('task_stop', onFinish);
done();
}
}
gulp.on('task_stop', onFinish);
gulp.start('coffee');
});
Подумайте, есть ли task_err
событие, которое вы можете захотеть послушать.
task_stop
срабатывает при успешном завершении, а task_err
появляется при возникновении ошибки.
Вы также можете удивиться, почему нет официальной документации для gulp.start()
. Этот ответ от члена глотка объясняет вещи:
gulp.start
специально не документирован, потому что это может привести к сложным файлам сборки, и мы не хотим, чтобы люди его использовали
(источник: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )