运行序列是最明确的方法(至少在Gulp 4.0发布之前)
使用run-sequence,你的任务看起来像这样:
var sequence = require('run-sequence');
/* ... */
gulp.task('develop', function (done) {
sequence('clean', 'coffee', done);
});
但如果你(出于某种原因)不喜欢使用它,那就咽下去吧。Start方法将帮助:
gulp.task('develop', ['clean'], function (done) {
gulp.on('task_stop', function (event) {
if (event.task === 'coffee') {
done();
}
});
gulp.start('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成员的回答解释了这些事情:
饮而尽。Start是故意没有记录的,因为它会导致复杂的构建文件,我们不希望人们使用它
(来源:https://github.com/gulpjs/gulp/issues/426 # issuecomment - 41208007)