Любой способ в Gulp получить согласованный шаблон глобуса в потоке? - PullRequest
1 голос
/ 01 апреля 2019

Есть ли способ узнать, какому шаблону шарика соответствует виниловый объект в потоке src() Гулпа? Например, с помощью плагина rename я могу получить объект Vinyl и получить его path, dirname и тому подобное. Но прямо сейчас в моем Gulpfile у меня есть логика для воссоздания шаблона глоба через таблицу поиска (для синхронизации с локальным живым сайтом из репозитория dev).

1 Ответ

2 голосов
/ 01 апреля 2019

Я не вижу никакой документации, предполагающей, что совпавший шаблон глобуса записан рядом с файлом. Если вы передадите массив в gulp.src, вы можете попытаться сопоставить путь текущего файла с массивом, используя библиотеку micromatch. Это потребует, чтобы передаваемые шаблоны glob были уникальными в том смысле, что конкретному файлу может соответствовать не более одного шаблона.

Пример для этого:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...