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

时间:2014-05-19 19:16:58

标签: javascript node.js gulp

我有一个简单的默认任务用于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?

1 个答案:

答案 0 :(得分:2)

根据@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所有文件。 此解决方案执行 not lint文件,这些文件在首次启动时不存在。