[英]gulp-jshint specify files which should go through jshint() and ignore other files
我有这样的情况,我正在通过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
文件的方法,该文件应位于项目的根目录中,例如,如果要忽略vendor文件夹中的所有文件,只需在.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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.