簡體   English   中英

gulp-jshint指定應該通過jshint()並忽略其他文件的文件

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM