使用`**`,但忽略与指定名称匹配的目录

时间:2019-05-06 23:13:57

标签: javascript glob minimatch

我正在寻找一个与所有后代目录(特定名称的目录除外)匹配的全局名称。例如,foo/**/*.js与作为*.js的后代的所有foo/文件匹配,这很好;我想要的模式扩展名将忽略__tests__目录下的所有后代。

foo/
  file01.js
  __tests__/
    ignore01.js
  bar/
    file02.js
    __tests__/
      ignore02.js
      qux
        ignore04.js
    baz/
      file03.js
      __tests__/
        ignore03.js

我尝试过的:

  • foo/**!(__tests__)/*.js
  • foo/!(__tests__)**/*.js
  • foo/**!(__tests__)**/*.js
  • foo/**/!(__tests__)/*.js
  • foo/!(__tests__)/**/*.js

1 个答案:

答案 0 :(得分:1)

这不是最优雅的解决方案,但是使用扩展功能应该可以在这里工作:

foo/{,**/!(__tests__)/}*.js

这会扩展到两个应该与您的路径匹配的条件,即

foo/*.js
foo/**/!(__tests__)/*.js

您可以了解有关over here的更多信息。

相关问题