Run-Sequence ist der klarste Weg (zumindest bis Gulp 4.0 veröffentlicht wird)
Mit run-sequence sieht Ihre Aufgabe folgendermaßen aus:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
Aber wenn Sie (aus irgendeinem Grund) es vorziehen, es nicht zu verwenden, gulp.start
hilft die Methode :
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
Hinweis: Wenn Sie die Aufgabe nur starten, ohne auf das Ergebnis zu hören, wird die develop
Aufgabe früher als beendet coffee
, was verwirrend sein kann.
Sie können den Ereignis-Listener auch entfernen, wenn er nicht benötigt wird
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');
});
Bedenken Sie, dass es auch ein task_err
Ereignis gibt, das Sie möglicherweise anhören möchten.
task_stop
wird bei erfolgreichem Abschluss ausgelöst und task_err
erscheint, wenn ein Fehler vorliegt.
Sie fragen sich vielleicht auch, warum es keine offizielle Dokumentation für gibt gulp.start()
. Diese Antwort von gulp member erklärt die Dinge:
gulp.start
ist absichtlich undokumentiert, da dies zu komplizierten Build-Dateien führen kann und wir nicht möchten, dass Benutzer sie verwenden
(Quelle: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )