我正在学习使用gulp 4并遇到麻烦:如果必须处理许多文件夹(我的电脑上超过22个),下面的代码不能正常完成。我认为这是由于任务完成的时间限制,因为文件夹数量较少,它可以正常工作。我已经听说过--timeout,但它在gulp 4中看起来过时了(gulp --help没有显示那个标志),而且我没有找到任何其他方法来延长任务执行时间。
function parse_blocks (done) {
BEM_tree = {};
gulp.src(app.blocks)
.pipe(flatmap((stream, file) => {
let block = file.stem;
BEM_tree[block]={};
if(!fs.existsSync(file.path+"/"+block+".pug")) {
let files = fs.readdirSync(file.path);
for (let i in files) {
let f = files[i].match(/^[\w\s-]*\.pug$/);
if(f!==null && f[0]!==(block+".pug"))
fs.renameSync(file.path+"/"+f[0],file.path+"/"+block+".pug");
}
}
if(!fs.existsSync(file.path+"/"+block+".styl")) {
let files = fs.readdirSync(file.path);
for (let i in files) {
let f = files[i].match(/^[\w\s-]*\.styl$/);
if(f!==null && f[0]!==(block+".styl"))
fs.renameSync(file.path+"/"+f[0],file.path+"/"+block+".styl");
}
}
fs.ensureFileSync(file.path+"/"+block+".pug");
fs.ensureFileSync(file.path+"/"+block+".styl");
return stream;
}))
.on("finish", ()=>{done();});
}
我正在努力寻找答案,但一无所获(可能使用了错误的关键词)。如果你想在你的电脑上试一下,你可以在https://github.com/e-g1gor/gulp-task-not-finish-trouble下载工作目录,但不要忘记先运行npm install。有没有办法迫使gulp等到任务完成而不会错误?请指教。谢谢你的帮助!
UPD: 与代码相同的行为
function parse_blocks (done) {
BEM_tree = {};
gulp.src(app.blocks)
.pipe(flatmap((stream, file) => {
return stream;
}))
.on("finish", ()=>{done();});
}
所以它可能是flatmap插件的东西,仍在试图找出正在发生的事情