javascript – 如何将gulp.watch()传递给管道?

我有一个简单的默认任务,用于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'));
    });

所发生的是所有文件都是linted,而不仅仅是已更改的文件.

有没有办法只将更改的文件传递给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}以避免在启动时linting所有文件.
此解决方案不会丢失首次启动时不存在的文件.

点赞