如何使用gulp-filter和main-bower-files来过滤中间的目录

时间:2015-08-19 09:14:57

标签: node.js gulp gulp-filter

我想只过滤路径中间某处包含目录ui-router的文件。

我有以下代码:

var gulp = require('gulp');


var mainBowerFiles = require('main-bower-files');
var debug = require('gulp-debug');
var gulpFilter = require('gulp-filter');


gulp.task('default',function() {
    var bower_files = mainBowerFiles();
    var js_filter = gulpFilter(['**/*.js']);

    gulp.src(bower_files)
        .pipe(js_filter)
        .pipe(debug({title: 'unicorn:'}))

    var js_filter = gulpFilter(['**/ui-router/**']);

    gulp.src(bower_files)
        .pipe(js_filter)
        .pipe(debug({title: 'unicorn1:'}))
});

输出结果为:

  

[12:10:53]独角兽:bower_components \ ngstorage \ ngStorage.js

     

[12:10:53] unicorn:bower_components \ ui-router \ release \ angular-ui-router.js

     

[12:10:53]独角兽:bower_components \ x2js \ xml2json.min.js [12:10:53]

     

unicorn1:0件

意味着['**/*.js']可以过滤掉所有js文件。

['**/ui-router/**']不起作用。这种模式有什么问题?

我阅读了以下文档https://github.com/isaacs/node-glob,但我不明白为什么它不起作用。

1 个答案:

答案 0 :(得分:0)

经过长时间的黑客攻击后,我发现了这个问题。 在gulp-filter中,发送了乙烯基file.relative属性。Comment from Sindre Sorhus

在我们的例子中,文件没有globs(我的理解),因此我们只得到没有目录的文件的名称。

解决方案是写代替gulp.src(bower_files) gulp.src(bower_files,{base:__dirname})

这里我们说从哪里开始相关文件。