A sequência de execução é a maneira mais clara (pelo menos até o Gulp 4.0 ser lançado)
Com a sequência de execução , sua tarefa ficará assim:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
Mas se você (por algum motivo) preferir não usá-lo, o gulp.start
método ajudará :
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
Nota: Se você iniciar a tarefa apenas sem ouvir o resultado, a develop
tarefa será concluída mais cedo coffee
e isso pode ser confuso.
Você também pode remover o ouvinte de eventos quando não for necessário
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');
});
Considere que também há um task_err
evento que você pode querer ouvir.
task_stop
é acionado na conclusão bem-sucedida, enquanto task_err
aparece quando há algum erro.
Você também pode se perguntar por que não há documentação oficial para gulp.start()
. Esta resposta do membro gulp explica o seguinte:
gulp.start
não é documentado de propósito porque pode levar a arquivos de compilação complicados e não queremos que as pessoas o usem
(fonte: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )