我想只过滤路径中间某处包含目录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,但我不明白为什么它不起作用。
答案 0 :(得分:0)
经过长时间的黑客攻击后,我发现了这个问题。 在gulp-filter中,发送了乙烯基file.relative属性。Comment from Sindre Sorhus
在我们的例子中,文件没有globs(我的理解),因此我们只得到没有目录的文件的名称。
解决方案是写代替gulp.src(bower_files)
gulp.src(bower_files,{base:__dirname})
这里我们说从哪里开始相关文件。