run-sequence est le moyen le plus clair (au moins jusqu'à la sortie de Gulp 4.0)
Avec run-sequence , votre tâche ressemblera à ceci:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
Mais si vous (pour une raison quelconque) préférez ne pas l'utiliser, la gulp.start
méthode vous aidera :
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
Remarque: Si vous démarrez uniquement la tâche sans écouter le résultat, la develop
tâche se terminera plus tôt que coffee
, et cela peut prêter à confusion.
Vous pouvez également supprimer l'écouteur d'événements lorsqu'il n'est pas nécessaire
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');
});
Considérez qu'il y a aussi un task_err
événement que vous voudrez peut-être écouter.
task_stop
est déclenché en cas de réussite, tandis que task_err
s'affiche en cas d'erreur.
Vous pouvez également vous demander pourquoi il n'y a pas de documentation officielle pour gulp.start()
. Cette réponse d'un membre de gulp explique les choses:
gulp.start
n'est pas documenté exprès car cela peut conduire à des fichiers de construction compliqués et nous ne voulons pas que les gens l'utilisent
(source: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )