有没有办法知道Gulp的src()
流中Vinyl对象匹配的是什么glob模式?例如,使用rename
插件,我可以获取Vinyl
对象,并获取其path
,dirname
等。但是现在在我的Gulpfile中,我有一些逻辑可以通过查找表重新创建glob模式(用于从dev仓库同步到本地实时站点)。
答案 0 :(得分:2)
我看不到任何文档表明匹配的glob模式记录在文件旁边。如果将数组传递到gulp.src
,则可以尝试使用micromatch
库将当前文件的路径与数组匹配。这将要求传入的全局模式必须唯一,因为一个特定的文件最多只能匹配一个模式。
执行此操作的示例:
const gulp = require('gulp'),
tap = require('gulp-tap'),
mm = require('micromatch');
function example() {
const srcGlobPatternsArray = ['src/js/**/*.js', 'src/css/**/*.css'];
return gulp.src(srcGlobPatternsArray).pipe(
tap((file) => {
const globIndex = srcGlobPatternsArray.findIndex((element) => {
return mm.isMatch(
file.history[0].substring(file.cwd.length + 1),
element
);
});
if (globIndex !== -1) {
console.log(
'Glob pattern matched: ' +
srcGlobPatternsArray[globIndex] +
' at index ' +
globIndex
);
} else {
console.log('Could not match glob');
}
})
);
}
exports.default = example;