run-sequence是最清晰的方式(至少在 Gulp 4.0 发布之前)
使用 run-sequence,您的任务将如下所示:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
但是,如果您(出于某种原因)不想使用它,gulp.start
方法将有所帮助:
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('coffee');
});
注意: 如果只开始任务而不听结果,develop
任务会早于 完成coffee
,这可能会造成混淆。
您也可以在不需要时删除事件侦听器
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');
});
考虑也有task_err
活动,你可能要听。
task_stop
成功完成task_err
时触发,出现错误时出现。
您可能还想知道为什么没有gulp.start()
. gulp 成员的这个回答解释了这些事情:
gulp.start
故意没有记录,因为它会导致复杂的构建文件,我们不希望人们使用它
(来源:https : //github.com/gulpjs/gulp/issues/426#issuecomment-41208007)