run-sequence ist der klarste Weg (zumindest bis Gulp 4.0 veröffentlicht wird)
Mit run-sequence wird deine Aufgabe so aussehen:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
Aber wenn du (aus irgendeinem Grund) es lieber nicht verwenden möchtest, gulp.start
Methode wird helfen:
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
Hinweis: Wenn du nur die Aufgabe startest, ohne auf das Ergebnis zu hören, wird die Aufgabe develop
eher beendet als coffee
, und das kann verwirrend sein.
Du kannst auch das Ereignis-Listener entfernen, wenn es 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');
});
Beachte dass es auch das Ereignis task_err
gibt, dem du vielleicht zuhören möchtest. task_stop
wird bei erfolgreichem Abschluss ausgelöst, während task_err
erscheint, wenn es einen Fehler gibt.
Du fragst dich vielleicht auch, warum es keine offizielle Dokumentation für gulp.start()
gibt. Diese Antwort von einem gulp-Mitglied erklärt die Dinge:
gulp.start
wird absichtlich nicht dokumentiert, weil es zu komplizierten Build-Dateien führen kann und wir nicht möchten, dass Leute es verwenden
(Quelle: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007)