Я пытаюсь определить, какой механизм сопоставления использовать для нескольких различных вариантов использования, которые у нас есть.Самое главное, мы хотим повторить поведение, которое имеет синтаксический анализатор gitignore.
Мы рассматривали возможность использования globby fast-glob или node-glob ,Но все они, кажется, имеют расширенную функциональность, которую не обеспечивает синтаксический анализ по умолчанию .gitignore.
Т.е. globby использует fast-glob, а fast-glob использует micromatch, который предоставляет пользовательские функции.И кажется, что node-glob расширяет синтаксис по умолчанию.Поэтому я начал исследовать немного ниже по цепочке.
Я немного запутался, почему существует так много пакетов, которые, кажется, делают одни и те же / очень похожие вещи.
Замечания / Вопросы:
- Все онипохоже, что подстановочный знак пути к файлу совпадает тем или иным образом (возможно, что любое совпадение может быть более общим)
- Minimatch, по-видимому, медленнее, чем Micromatch, но имеет ту же / аналогичную функциональность?
- Похоже, что Multimatchпростая обертка вокруг мини-матча, допускающая несколько шаблонов.Не уверен, что это оптимизировано каким-либо образом.
- Anymatch кажется очень общим.Кажется, он не знает о сопоставлении пути к файлу?
- Picomatch имеет «полную поддержку стандартных и расширенных возможностей Bash glob».Я предположил бы, что это близко соответствует обработке gitignore?
- Nanomatch, кажется, расширяет функциональность Picomatch.Является ли это более функциональным, чем то, что обеспечивает процессор gitignore?
- Micromatch, кажется, расширяет функциональность Nanomatch и является заменой Minimatch?Он заявляет, что является «заменой» замены, однако, похоже, что это не тот случай, когда рассматривается функциональность, которую они предоставляют?
- Anymatch, Picomatch, Nanomatch и Micromatch - все они публикуются в рамках github организации Micromatch.(называет ли кто-нибудь путаницу?)
- Похоже, что нет эквивалента Multimatch для пакета "Организация Micromatch"?Или я просто не нашел его?
Первый вопрос, на который нужно ответить, - что на самом деле использует стандартный git для обработки своего gitignore.А затем выясните, какая упаковка будет соответствовать этому наиболее близко.