#gulp
#gulp
Вопрос:
Есть ли какой-нибудь способ узнать, какому шаблону глобуса соответствует объект Vinyl в src()
потоке Gulp? Например, с помощью rename
плагина я могу получить Vinyl
объект и получить его path
, dirname
и тому подобное. Но прямо сейчас в моем Gulpfile у меня есть некоторая логика для воссоздания шаблона глобуса с помощью таблицы подстановки (для синхронизации с локальным активным сайтом из репозитория разработчиков).
Ответ №1:
Я не вижу никакой документации, предполагающей, что согласованный шаблон глобуса записан вместе с файлом. Если вы передаете массив в 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;
Комментарии:
1. Спасибо, я собираюсь принять этот ответ как «Нет: это невозможно сделать напрямую».