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

Javascript 在nodejs中复制精确的.gitignore样式解析,javascript,wildcard,filepath,Javascript,Wildcard,Filepath,我正试图确定在我们的几个不同用例中使用哪个匹配器。最重要的是,我们希望复制gitignore解析器的行为 我们正在考虑使用or。但它们似乎都具有.gitignore默认解析所不提供的扩展功能 也就是说,globby使用fast glob,fast glob使用micromatch,它公开了自定义功能。node glob似乎也扩展了默认语法。因此,我开始在链条的较低位置进行调查 我有点困惑,为什么有这么多的软件包似乎都在做相同/非常相似的事情 意见/问题: 它们似乎都以这样或那样的

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

我们正在考虑使用or。但它们似乎都具有.gitignore默认解析所不提供的扩展功能

也就是说,globby使用fast glob,fast glob使用micromatch,它公开了自定义功能。node glob似乎也扩展了默认语法。因此,我开始在链条的较低位置进行调查

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

意见/问题:

  • 它们似乎都以这样或那样的方式进行文件路径通配符匹配(期望anymatch可能更通用)
  • Minimatch显然比Micromatch慢,但具有相同/相似的功能
  • Multimatch似乎是minimatch的一个简单包装器,允许使用多种模式。不确定是否以任何方式对此进行了优化
  • 任何匹配似乎都非常通用。它似乎不知道文件路径匹配
  • Picomatch“完全支持标准和扩展的Bash glob功能”。我假设这与gitignore处理非常匹配
  • Nanomatch似乎扩展了Picomatch的功能。这比gitignore处理器提供的功能更多吗
  • Micromatch似乎扩展了Nanomatch的功能,并取代了Minimatch?它声称是一个“临时”替代品,但从它们公开的功能来看,情况似乎并非如此
  • Anymatch、Picomatch、Nanomatch和Micromatch都是在github组织Micromatch(有人吗?)
  • “微匹配组织”套件似乎没有多重匹配的等价物?还是我没找到
  • 要回答的第一个问题是标准git实际使用什么来处理它的gitignore。然后找出哪个软件包与之最匹配。

    这是picomatch在我记忆中的最早版本。它回答了你所有的问题,还有更多(完全披露:我是picomatch的作者)

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


    可以理解。在阅读了更多关于图书馆的详细自述后,你的困惑应该被消除。每个图书馆都会非常详细地解答您的问题

    在自述文件的底部隐藏得很好;)非常感谢。你知道gitignore使用哪种标准文件吗?我相信gitignore(git)使用的是wildmatch(
    wildmat.c
    )或它的派生版本