Точная репликация парсинга стиля .gitignore в nodejs - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь определить, какой механизм сопоставления использовать для нескольких различных вариантов использования, которые у нас есть.Самое главное, мы хотим повторить поведение, которое имеет синтаксический анализатор gitignore.

Мы рассматривали возможность использования globby fast-glob или node-glob ,Но все они, кажется, имеют расширенную функциональность, которую не обеспечивает синтаксический анализ по умолчанию .gitignore.

Т.е. globby использует fast-glob, а fast-glob использует micromatch, который предоставляет пользовательские функции.И кажется, что node-glob расширяет синтаксис по умолчанию.Поэтому я начал исследовать немного ниже по цепочке.

Я немного запутался, почему существует так много пакетов, которые, кажется, делают одни и те же / очень похожие вещи.

Замечания / Вопросы:

  1. Все онипохоже, что подстановочный знак пути к файлу совпадает тем или иным образом (возможно, что любое совпадение может быть более общим)
  2. Minimatch, по-видимому, медленнее, чем Micromatch, но имеет ту же / аналогичную функциональность?
  3. Похоже, что Multimatchпростая обертка вокруг мини-матча, допускающая несколько шаблонов.Не уверен, что это оптимизировано каким-либо образом.
  4. Anymatch кажется очень общим.Кажется, он не знает о сопоставлении пути к файлу?
  5. Picomatch имеет «полную поддержку стандартных и расширенных возможностей Bash glob».Я предположил бы, что это близко соответствует обработке gitignore?
  6. Nanomatch, кажется, расширяет функциональность Picomatch.Является ли это более функциональным, чем то, что обеспечивает процессор gitignore?
  7. Micromatch, кажется, расширяет функциональность Nanomatch и является заменой Minimatch?Он заявляет, что является «заменой» замены, однако, похоже, что это не тот случай, когда рассматривается функциональность, которую они предоставляют?
  8. Anymatch, Picomatch, Nanomatch и Micromatch - все они публикуются в рамках github организации Micromatch.(называет ли кто-нибудь путаницу?)
  9. Похоже, что нет эквивалента Multimatch для пакета "Организация Micromatch"?Или я просто не нашел его?

Первый вопрос, на который нужно ответить, - что на самом деле использует стандартный git для обработки своего gitignore.А затем выясните, какая упаковка будет соответствовать этому наиболее близко.

...