Javascript gulp筛选器未正确过滤排除的文件

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

我正在试验在项目中使用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 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']);