sekwencja uruchamiania jest najbardziej przejrzystym sposobem (przynajmniej do wydania Gulp 4.0)
W przypadku sekwencji uruchamiania twoje zadanie będzie wyglądać następująco:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
Ale jeśli (z jakiegoś powodu) wolisz go nie używać, gulp.start
metoda pomoże :
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
Uwaga: jeśli rozpoczniesz zadanie tylko bez odsłuchiwania wyniku, develop
zadanie zakończy się wcześniej niż coffee
, co może być mylące.
Możesz także usunąć detektor zdarzeń, gdy nie jest potrzebny
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');
});
Zastanów się, czy jest też task_err
wydarzenie, którego możesz chcieć słuchać.
task_stop
jest uruchamiany po pomyślnym zakończeniu, podczas gdytask_err
pojawia się, gdy wystąpi jakiś błąd.
Możesz także zastanawiać się, dlaczego nie ma oficjalnej dokumentacji gulp.start()
. Ta odpowiedź członka gulp wyjaśnia następujące rzeczy:
gulp.start
jest celowo nieudokumentowane, ponieważ może prowadzić do skomplikowanych plików kompilacji i nie chcemy, aby ludzie go używali
(źródło: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )