我如何将gulp.watch()传递给pipe道?

我有一个简单的默认任务为linting更改js文件:

gulp.task('default', function() { // watch for JS changes gulp.watch(base + 'javascripts/**/*.js', function() { gulp.run('jshint'); }); }); 

问题是, jshint任务再次源文件:

  gulp.task('jshint', function() { gulp.src([base + 'javascripts/*.js']) .pipe(jshint()) .pipe(jshint.reporter('default')); }); 

会发生什么是所有的文件都被删除,而不仅仅是被修改的文件。

有没有办法只将更改的文件传递给jshint?

根据@OverZealous,我发现这种方法使用gulp-watch

 gulp.task('default', function() { gulp.src(base + 'javascripts/**/*.js', { read: false }) .pipe(watch()) .pipe(jshint()) .pipe(jshint.reporter('default')); }); 

{ read: false }是必须的,以避免在启动时删除所有文件。 此解决scheme不会在首次启动时不存在不存在的文件。