Javascript gulp jshint指定应该通过jshint()并忽略其他文件的文件
我的情况是,我通过gulp从供应商脚本或我的脚本构建缩小脚本,类似于: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([
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/*
。请提供答案并标记为已接受!