Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript gulp jshint指定应该通过jshint()并忽略其他文件的文件_Javascript_Build Process_Gulp_Jshint - Fatal编程技术网

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

Javascript gulp jshint指定应该通过jshint()并忽略其他文件的文件,javascript,build-process,gulp,jshint,Javascript,Build Process,Gulp,Jshint,我的情况是,我通过gulp从供应商脚本或我的脚本构建缩小脚本,类似于: var paths = { public : './public/javascripts', api : './public/API', vendor : './public/vendor', destination : './dist' }; gulp.task('scripts-out', function() { gulp.src([

我的情况是,我通过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'));
});
pipe(jshint({
    files: paths.api     + '/e.js'
}))
只有
e.js
不是供应商脚本,只有该脚本应该通过jshint(),从插件的官方文档中我看不到解决方案

我尝试将
config
对象传递给jshint(),类似于:

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'));
});
pipe(jshint({
    files: paths.api     + '/e.js'
}))
那只是猜测而已,不起作用。这个附带问题是如何强制jshint将结果写入某个文件而不是控制台

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

您可以使用它来筛选传递给
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)

实际上,我找到了在项目根目录中创建.jshintignore文件的方法,该文件的内容为public/vendor/*
。请提供答案并标记为已接受!