我有以下一飲而盡配置:這個gulp命令是否會等待依賴任務?
gulp.task('bar', function() {
return gulp.src(files, { base: './' })
.pipe(gulp.dest('dist'))
});
gulp.task('foo', ['bar'], function() {
// do something...
});
將foo
等待bar
完成,然後再運行?
我有以下一飲而盡配置:這個gulp命令是否會等待依賴任務?
gulp.task('bar', function() {
return gulp.src(files, { base: './' })
.pipe(gulp.dest('dist'))
});
gulp.task('foo', ['bar'], function() {
// do something...
});
將foo
等待bar
完成,然後再運行?
按照文檔here:
要執行並完成之前,你的任務將運行任務的數組。
所以是的,它會在它運行任務之前完成。
此外,請注意以下說明。如果您的任務正在觸發後臺任務,並且沒有正確返回,則gulp可能會錯誤地認爲您的任務已完成。
注意:您的任務是否在依賴關係完成之前運行?確保您的依賴任務正確使用異步運行提示:接受回調或返回承諾或事件流。
除了評論和其他答案,我只想補充一點,你需要返回一個stream,一個承諾,或致電task function callback
parameter。
Gulp使用Orchestrator執行任務。
返回一個流(最常見的情況,並承諾類似)
gulp.task('somename', function(done) {
return gulp.src(res)
.pipe(minify())
.pipe(gulp.dest('build'));
});
使用回調(返回時,是不是一種選擇)
gulp.task('somename', function(done) {
// async function which does not return a stream like other gulp functions
getFilesAsync(function(err, res) {
// pass any errors to the callback
if (err) return done(err);
var stream = gulp.src(res)
.pipe(minify())
.pipe(gulp.dest('build'))
.on('end', done); // use the callback when it's done
});
});
如果你不這樣做的一個這些咕嘟咕嘟不會知道任務何時完成,並會立即開始下一個任務。
__是的,它會 – Satpal
它會在運行前等待,只要注意,如果你指定了多個依賴項,它們將全部並行運行,並不一定按照指定的順序執行 –