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.start
ไม่มีจุดประสงค์ในการทำเอกสารเพราะสามารถนำไปสู่การสร้างไฟล์ที่ซับซ้อนและเราไม่ต้องการให้คนใช้งาน
(ที่มา: https://github.com/gulpjs/gulp/issues/426#issuecomment-41208007 )