Gulp 吞咽任务订单-序列和;平行的

Gulp 吞咽任务订单-序列和;平行的,gulp,run-sequence,Gulp,Run Sequence,我有以下任务正在由Gulp运行 script-a script-b script-c script-a与任务b和c无关(相对而言),运行大约需要5秒钟 script-b和script-c是相关的,因此必须以串行方式运行,每种方式运行大约需要一秒钟 因此,我希望能够将a与b和c并行运行,同时保持后两者的串行运行 我目前正在使用runSequence以串联方式运行它们 gulp.task('script', function(callback) { return runSequence(

我有以下任务正在由Gulp运行

  • script-a
  • script-b
  • script-c
  • script-a
    与任务
    b
    c
    无关(相对而言),运行大约需要5秒钟

    script-b
    script-c
    是相关的,因此必须以串行方式运行,每种方式运行大约需要一秒钟

    因此,我希望能够将
    a
    b
    c
    并行运行,同时保持后两者的串行运行

    我目前正在使用runSequence以串联方式运行它们

    gulp.task('script', function(callback) {
      return runSequence(
        'script-a',
        'script-b',
        'script-c',
        callback
      )
    });
    
    我可以让
    script-a
    与其他类似的任务并行运行

    gulp.task('script', function(callback) {
      return runSequence(
        ['script-a', 'script-b'],
        'script-c',
        callback
      )
    });
    

    但这似乎只是解决问题的一半。似乎答案应该是显而易见的?

    您可以尝试在另一个任务中对脚本b和脚本c进行分组,然后在任务
    脚本中并行运行。大概是这样的:

    // script-b and script-c run in serial
    gulp.task('scriptsBC', function(callback){
      return runSequence(
        'script-b',
        'script-c',
        callback
      )
    })
    
    // script-a and scriptBC run in paralell
    gulp.task('script', function(callback) {
      return runSequence(
        ['script-a','scriptsBC'],
        callback
      )
    });
    

    创建另一个任务来实现我所追求的目标似乎有些过分,但你可能是对的,这可能是唯一的方法。真可惜!赞成。看起来不是更好的解决方案,但很有效。您可以探索Gulp的版本4,它的API中已经有两种方法。但是Gulp 4还没有完成,是的,我已经看过了这些变化——但是我想坚持Gulp的稳定版本——即使这意味着在4最终发布时改变我的任务。