Javascript gulp筛选器未正确过滤排除的文件
我正在试验在项目中使用gulpjs而不是grunt。在代码上运行jsHint时,我试图使用gulpfilter忽略供应商库。我已经根据自述文件示例中的代码编写了代码,但是这些文件还没有被过滤 我正在运行节点0.10.26、gulp3.8.0和gulpfilter 0.4.1 我试图在一个目录Javascript gulp筛选器未正确过滤排除的文件,javascript,node.js,gulp,gulp-filter,Javascript,Node.js,Gulp,Gulp Filter,我正在试验在项目中使用gulpjs而不是grunt。在代码上运行jsHint时,我试图使用gulpfilter忽略供应商库。我已经根据自述文件示例中的代码编写了代码,但是这些文件还没有被过滤 我正在运行节点0.10.26、gulp3.8.0和gulpfilter 0.4.1 我试图在一个目录wcui/app/js上运行jshint,该目录包含许多其他的js文件目录,总共大约有120个js文件。我只想排除供应商目录 我的代码如下所示: var gulp = require('gulp'); var
wcui/app/js
上运行jshint,该目录包含许多其他的js文件目录,总共大约有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']);
现在运行
gulpdev
与我添加过滤器之前做的一样,过滤每个js文件。如何更改此项以使其正确过滤?gulp示例的src格式为“wcui/app/js/*.js”,但当我承认**
glob时,我根本没有子目录。除此之外,我认为我正在严格遵循自述文件(针对我的特定任务进行了更改) 对于拥有更新版本的gulp filter的读者(撰写本文时的版本为1.0.0),请使用如下过滤器gulpFilter(['*','!app/vendor'])
推出的版本有一个突破性的变化
打破变化
使用否定代码>因为第一个模式不再匹配任何内容
解决方法:['*','!cake']
基本上,这意味着你需要更换
var filter = gulpFilter('!wcui/app/js/vendor');
与
你可以走了
另外,正如MildlySerial在评论中指出的,您应该使用.pipe(filter.restore())
而不是。pipe(filter.restore)
不应该。pipe(filter.restore)
应该是。pipe(filter.restore())
?对于@MildlySerious-以及根据其建议进行更改的Ben,答案是否定的。否则,pipe(filter.restore)
-会抛出一个错误。对我来说,有效的方法是对子目录中的文件使用双星号:['**','!cake']
。
var filter = gulpFilter(['*', '!wcui/app/js/vendor']);