Gulp 吞咽和全局流任务完成得太早
我有一个Gulp任务,它使用glob stream递归地循环目录和文件来执行任务,类似于下面的任务,但要复杂得多:Gulp 吞咽和全局流任务完成得太早,gulp,Gulp,我有一个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', doS
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认为任务已经完成,而它仍在运行,这在我的构建过程中造成了问题-我如何避免这种情况?我已经在使用运行序列,但没有效果。为什么要使用递归函数手动遍历目录树?为什么不让
glob-stream
为您做这项工作呢?然后您只需处理//做点什么
部分:
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/
下面所有文件夹和文件的流,因此您不必自己实现递归树遍历
请注意,
编译
任务返回流
。否则,gulp无法判断编译
任务何时完成,并在编译
完成之前开始运行第二个任务。嘿,谢谢你的回复!我正在努力解决的问题是,第二个任务仍然在编译任务完成之前被调用,即使在返回流之后也是如此!您是否放弃了递归的doSomething()
?如果是,那么您可能正在doSomething()
中执行异步操作。流完成,第二个任务开始运行,但异步操作尚未完成。