[英]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.