Gulp任务管道只有在源文件发生变化时才会连接

All*_*len 8 gulp gulp-watch

我有一个生成连接的JS文件的gulp任务.我使用手表来检测项目中所有文件的更改,并希望concat任务只在源文件自上次执行后发生更改时才重新连接文件.

注意:我可以使用更具体的监视命令,但在我的实际生产情况下,我们从多个源JS文件组合生成多个连接的JS文件,因此为每个组件创建监视和任务要复杂得多

像这样的东西:

gulp.task('scripts', function() {
   return gulp.src('src/**/*.js')
      .pipe(cache('scripts'))
      // If no changed files in pipeline, exit pipeline, 
      // else add in all src files again
      .pipe(concat('app.js'))
      .pipe(gulp.dest('build/'));
});
Run Code Online (Sandbox Code Playgroud)

我考虑过最后两个步骤使用lazypipe所以我只运行concat和dest如果有文件,但我不知道如何:

  • 根据管道中是否还有任何文件运行条件(缓存()之后
  • 带回所有源文件(基本上重新发布gulp.src()再次重新编译流)

我知道我可以使用gulp-remember用于第二部分,但在我的生产情况下,如果可能的话,重建流将更加清晰.

以前做过这个的人还是有任何关于从哪里开始的提示?

moe*_*ger 1

插件gulp-newer应该可以解决问题。

   gulp.task('scripts', function() {
   return gulp.src('src/**/*.js')
      .pipe(newer('app.js'))
      .pipe(concat('app.js'))
      .pipe(gulp.dest('build/'));
});
Run Code Online (Sandbox Code Playgroud)