我的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工作站上获得了成功)。
gulp.series(javascFiles)
的文字会很好。如何强制顺序执行?