在nodejs中复制精确的.gitignore样式解析

时间:2018-12-07 18:35:38

标签: npm wildcard filepath

我正在尝试确定在一些不同的用例中使用哪个匹配器。最重要的是,我们要复制gitignore解析器的行为。

我们正在考虑使用globby fast-globnode-glob。但是它们似乎都具有.gitignore默认解析不提供的扩展功能。

即globby使用fast-glob,fast-glob使用micromatch,它公开了自定义功能。并且node-glob似乎也扩展了默认语法。因此,我开始研究链下端的一些地方。

我有点困惑,为什么会有如此多的软件包似乎都在做相同/非常相似的事情。

观察/问题:

  1. 它们似乎都以一种或另一种方式匹配文件路径通配符(期望anymatch可能更通用)
  2. Minimatch显然比Micromatch慢,但是功能相同/相似吗?
  3. Multimatch似乎是minimatch的简单包装,它允许多种模式。不确定是否以任何方式对其进行了优化。
  4. Anymatch似乎非常通用。似乎不知道文件路径匹配吗?
  5. Picomatch具有“完全支持标准和扩展的Bash glob功能”。我认为这与gitignore处理紧密匹配吗?
  6. Nanomatch似乎扩展了Picomatch的功能。这是否比gitignore处理器提供的功能更多?
  7. Micromatch似乎扩展了Nanomatch的功能,并且似乎可以替代Minimatch?它声称是“即插即用”的替代品,但是看它们所提供的功能似乎并非如此?
  8. Anymatch,Picomatch,Nanomatch和Micromatch都在github组织Micromatch下发布(给任何人造成混淆了吗?)
  9. “ Micromatch组织”套件似乎不等同于Multimatch?还是我只是找不到它?

第一个要回答的问题是标准git实际使用什么来处理它的gitignore。然后找出哪个软件包最匹配。

1 个答案:

答案 0 :(得分:2)

据我记得,这个library comparison一直在进行picomatch。它回答了您所有的问题,甚至更多(完整披露:我是picomatch的作者)。

我有点困惑,为什么会有如此多的软件包看起来都在做相同/非常相似的事情。

难以理解。阅读有关图书馆广泛自述文件的更多信息后,您的混乱就应该消除。每个库都非常详细地解决了您的问题。