我正在尝试使用gulpjs代替grunt进行项目.我正在尝试使用gulp过滤器在我的代码上运行jsHint时忽略供应商库.我的代码基于自述文件的代码,但文件尚未过滤.
我正在运行节点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时,我根本没有得到子目录.除此之外,我想我正在关注这封信的自述文件(对我的特定任务进行了更改).
解决方法
对于拥有更新版gulp-filter的读者(在撰写本文时发布的版本是1.0.0)
gulp-filter版本0.5.0的发布引入了multimatch 0.3.0,其中发生了重大变化.
Breaking change
Using a negate
!
as the first pattern no longer matches anything.Workaround:
['*','!cake']
基本上,它意味着你需要更换
var filter = gulpFilter('!wcui/app/js/vendor');
同
var filter = gulpFilter(['*','!wcui/app/js/vendor']);
你很高兴.
另外,正如MildlySerIoUs的评论中所指出的,你应该有.pipe(filter.restore())而不是.pipe(filter.restore)