簡體   English   中英

run-sequence不按順序運行gulp任務

[英]run-sequence doesn't run gulp tasks in order

我的Gulp文件中有3個必須按此順序運行的任務:

  1. clean (刪除/dist文件夾中的所有內容)
  2. copy (將多個文件復制到/dist文件夾中)
  3. 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文檔具有以下關於異步操作的任務:

確保它們返回流或承諾,或處理回調

copyreplace任務都有多個流。 你必須返回所有流,而不僅僅是最后一個流。 如果你沒有歸還其他流,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM