在源文件数组上依次执行相同任务

问题描述 投票:0回答:1

我的gulp文件的简化版本如下:

stylusFiles=[...];

gulp.task("stylus", function(done){
  global.stopOnError = true;
  stylusFiles.forEach((file) => {
    executeStylus(file.name, file.src, Date.now());
  });
  done();
});

javascFiles = [firstjs, secondjs];

gulp.task("firstcompile", function (done) {
  createBundle(firstjs);
  done();
});

gulp.task("secondcompile", function (done) {
  createBundle(secondjs);
  done();
});

gulp.task("compile", function(done) {
  setVersion();
  global.stopOnError = true;
  stylusFiles.forEach((file) => {
    executeStylus(file.name, file.src, Date.now());
  });

  createBundles(javascFiles);
  done();
});

gulp.task("seqcompile",
  gulp.parallel("stylus",
  gulp.series("firstcompile","secondcompile"), 
  function(done) {
    setVersion();
    global.stopOnError = true;
    done();
  }
));

手写笔编译以并发方式工作(输出顺序!=手写笔文件在代码中的顺序)。如果我在任何单个JS文件上运行gulp,它就可以工作。我尝试强制顺序执行的原因是,整套JS文件上的gulp编译要么因“堆内存不足”错误而崩溃(甚至在16 GB工作站上使用--max_old_stack_size = 12000)或运行在较大的JS文件(原始大小<= 24 MB)上无限期地(> 10 h)。但是,在示例中,这里的编写方式gulp seqcompile仍然不是顺序的,因为输出顺序!=代码中的JS文件的顺序,并且在我的远程实例上,gulp仍然无限期运行(至少我有现在在16 GB工作站上获得了成功)。

  1. 如何强制顺序执行?
  2. 能够编写类似gulp.series(javascFiles)的文字会很好。
  3. 我不确定setVersion是否仅运行一次之前手写笔和js编译,应该这样做。
javascript functional-programming gulp frontend gulp-uglify
1个回答
0
投票

如何强制顺序执行?

© www.soinside.com 2019 - 2024. All rights reserved.