gulp-jshint 指定应该通过 jshint() 的文件并忽略其他文件

gulp-jshint specify files which should go through jshint() and ignore other files

本文关键字:文件 其他 jshint gulp-jshint      更新时间:2023-09-26

我遇到的情况是,我正在通过gulp构建缩小的脚本,从供应商脚本或我的脚本中构建缩小的脚本,如下所示:

var paths = {
    public      : './public/javascripts',
    api         : './public/API',
    vendor      : './public/vendor',
    destination : './dist'
};
gulp.task('scripts-out', function() {
    gulp.src([
        paths.public + '/a.js',
        paths.public + '/b.js',
        paths.public + '/c.js',
        paths.public + '/d.js',
        paths.api    + '/e.js',
        paths.public + '/f.js'
    ])
    .pipe(jshint())
    .pipe(jshint.reporter('default'))
    .pipe(concat('out.js'))
    .pipe(gulp.dest(paths.destination + '/javascripts'));
});

只有e.js不是供应商脚本,只有该脚本应该通过 jshint((,从插件的官方文档中我看不到解决方案。

我尝试将config对象传递给jshint((,如下所示:

pipe(jshint({
    files: paths.api     + '/e.js'
}))

那只是猜测,行不通。这个问题如何强制jshint将结果写入某个文件而不是控制台?

编辑:查找解决方案我找到了通过.jshintignore文件的方法,该文件应该在项目的根目录中,例如,如果您想忽略供应商文件夹中的所有内容,您只需向.jshintignore文件添加一行:public/src/vendor/*

您可以使用

gulp-filter来过滤传递给jshint的文件:

var gulpFilter = require('gulp-filter');
var filter = gulpFilter([paths.public + '/e.js']);
gulp.task('scripts-out', function() {
    return gulp.src([
        paths.public + '/a.js',
        paths.public + '/b.js',
        paths.public + '/c.js',
        paths.public + '/d.js',
        paths.api    + '/e.js',
        paths.public + '/f.js'
    ])
    .pipe(filter)
    .pipe(jshint())
    .pipe(jshint.reporter('default'))
    .pipe(filter.restore())
    .pipe(concat('out.js'))
    .pipe(gulp.dest(paths.destination + '/javascripts'));
});

新版本(3.0.1(有界面更新:

 // you should pass {restore: true} for restore ability
 var filter = gulpFilter([paths.public + '/e.js'], {restore: true});
 ...
 // filter.restore is now object, not a method
 .pipe(filter.restore)