Gulp和glob-stream任务过早完成

时间:2016-02-25 20:26:55

标签: 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', doSomething);
}


gulp.task('compile', function() {
  var filePath = config.PATH;
  return doSomething(filePath);
});

我可以让任务实现结果并编译我需要的东西,但不幸的是Gulp认为任务已经完成,但它仍在运行,导致我的构建过程出现问题 - 我该如何避免这种情况?我已经在使用run-sequence但是没有效果。

1 个答案:

答案 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