我正在尝试使用gulpjs代替grunt进行项目。我在代码上运行jsHint时尝试使用gulp过滤器来忽略供应商库。我的代码是基于自述文件的代码,但文件尚未过滤。
我正在运行节点0.10.26,gulp 3.8.0和gulp filter 0.4.1
我试图在包含许多其他JS文件目录的目录wcui/app/js
上运行jshint,总共大约120个js文件。我想只排除供应商目录。
我的代码如下所示:
var gulp = require('gulp');
var gulpFilter = require('gulp-filter');
var jshint = require('gulp-jshint');
var srcs = {
scripts: ['wcui/app/js/**/*.js'],
styles: ['wcui/app/css/**/*.less','wcui/app/css/**/*.css']
};
var dests = {
scripts: 'wcui/static/js/',
styles: 'wcui/static/css/'
};
gulp.task('scripts', function() {
var filter = gulpFilter('!wcui/app/js/vendor');
return gulp.src(srcs.scripts)
.pipe(filter)
.pipe(jshint())
.pipe(jshint.reporter('jshint-stylish'))
.pipe(filter.restore)
.pipe(gulp.dest(dests.scripts));
});
gulp.task('styles', function() {
return gulp.src(srcs.styles)
.pipe(gulp.dest(dests.styles));
});
gulp.task('dev',['scripts','styles']);
现在正在运行gulp dev
,它在添加过滤器之前做了同样的事情,linting每个js文件。如何更改此选项以使其正确过滤? gulp示例的格式为'wcui / app / js / * .js'但是当我承认**
glob时,我根本就没有得到子目录。除此之外,我想我跟随着自述文件的自述文件(对我的特定任务进行了更改)。
答案 0 :(得分:15)
对于拥有更新版gulp-filter的读者(撰写时发布的版本是1.0.0)
0.5.0版本gulp-filter的版本multimatch 0.3.0引入了{{3}},其中发生了重大变化。
突破变化
使用否定
!
作为第一个模式不再匹配任何内容。解决方法:
['*', '!cake']
基本上,这意味着你需要更换
var filter = gulpFilter('!wcui/app/js/vendor');
与
var filter = gulpFilter(['*', '!wcui/app/js/vendor']);
你很高兴。
此外,正如 MildlySerious 的评论中所述,您应该.pipe(filter.restore())
代替.pipe(filter.restore)
答案 1 :(得分:0)
使用此gulpFilter(['*', '!app/vendor'])