Используйте `**`, но игнорируйте каталоги, которые соответствуют указанному имени - PullRequest
1 голос
/ 07 мая 2019

Я ищу глобус, который соответствует всем каталогам-потомкам, кроме тех, которые имеют определенное имя. Например, 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 Ответ

1 голос
/ 07 мая 2019

Не самое элегантное решение, но использование расширения должно работать здесь:

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

Это распространяется на два условия, которые должны соответствовать вашим путям, а именно

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

Вы можете узнать больше о шарах здесь .

...