[英]run-sequence doesn't run gulp tasks in order
我的Gulp文件中有3個必須按此順序運行的任務:
clean
(刪除/dist
文件夾中的所有內容) copy
(將多個文件復制到/dist
文件夾中) replace
(替換/dist
文件夾中某些文件中的某些字符串) 我已經閱讀了所有其他帖子,我嘗試過“run-sequence”,但由於“替換”任務最后沒有運行,因此無法正常工作。 我對使用“回調”感到困惑。 單獨運行任務工作正常。
var gulp = require('gulp');
var runSequence = require('run-sequence');
gulp.task('runEverything', function(callback) {
runSequence('clean',
'copy',
'replace',
callback);
});
gulp.task('clean', function () {
return del(
'dist/**/*'
);
});
gulp.task('copy', function() {
gulp.src('node_modules/bootstrap/dist/**/*')
.pipe(gulp.dest('dist/vendor'))
//...
return gulp.src(['index.html', '404.html', '.htaccess'])
.pipe(gulp.dest('dist/'));
});
gulp.task('replace', function(){
gulp.src(['dist/index.php', 'dist/info.php'])
.pipe(replace('fakedomain.com', 'realdomain.com'))
.pipe(gulp.dest('dist'));
return gulp.src(['dist/config.php'])
.pipe(replace('foo', 'bar'))
.pipe(gulp.dest('dist'));
});
使用這3個任務的完整示例將不勝感激。 謝謝。
run-sequence
文檔具有以下關於異步操作的任務:
確保它們返回流或承諾,或處理回調
copy
和replace
任務都有多個流。 你必須返回所有流,而不僅僅是最后一個流。 如果你沒有歸還其他流,Gulp將不會知道任何其他流,因此不會等待他們完成。
由於您只能返回單個流,因此必須合並流[在此處插入Ghostbusters參考]。 這將為您提供一個可以從任務返回的合並流。
以下是使用merge-stream
包的方法 :
var merge = require('merge-stream');
gulp.task('copy', function() {
var stream1 = gulp.src('node_modules/bootstrap/dist/**/*')
.pipe(gulp.dest('dist/vendor'))
//...
var stream2 = gulp.src(['index.html', '404.html', '.htaccess'])
.pipe(gulp.dest('dist/'));
return merge(stream1, stream2);
});
gulp.task('replace', function(){
var stream1 = gulp.src(['dist/index.php', 'dist/info.php'])
.pipe(replace('fakedomain.com', 'realdomain.com'))
.pipe(gulp.dest('dist'));
var stream2 = gulp.src(['dist/config.php'])
.pipe(replace('foo', 'bar'))
.pipe(gulp.dest('dist'));
return merge(stream1, stream2);
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.