我有一个Gulp任务,它使用glob-stream递归循环遍历目录和文件来执行任务,类似于下面,但更详细:
var gs = require('glob-stream');
var config = {
PATH: 'some/path/*.*'
}
function doSomething(filePath) {
var stream = gs.create(filePath);
// Do something
return gs.on('data', doSomething);
}
gulp.task('compile', function() {
var filePath = config.PATH;
return doSomething(filePath);
});
我可以让任务实现结果并编译我需要的东西,但不幸的是Gulp认为任务已经完成,但它仍在运行,导致我的构建过程出现问题 - 我该如何避免这种情况?我已经在使用run-sequence但是没有效果。
答案 0 :(得分:0)
为什么要手动使用递归函数遍历目录树?为什么不让glob-stream
为你工作呢?然后你只需要处理//Do something
部分:
var config = {
PATH: 'some/path/**' //glob pattern for all subfolder and files
};
function doSomething(filePath) {
//Do something
}
gulp.task('compile', function() {
var stream = gs.create(config.PATH);
stream.on('data', doSomething);
return stream;
});
gulp.task('secondTask', function() {
console.log('secondTask');
});
gulp.task('default', function() {
runSequence('compile', 'secondTask');
});
some/path/**
glob模式创建了some/path/
下所有文件夹和文件的流,因此您不必自己实现递归树步骤。
请注意,compile
任务会返回stream
。否则gulp无法告知compile
任务何时完成并在secondTask
完成之前开始运行compile
。