У мене ситуація, коли я намагаюся використовувати grunt для накладання кодової бази, виключаючи конкретні папки.
grunt використовує minimatch (подібний до bsdglob) під капотом для збігу файлів, але я, здається, не можу зрозуміти, як зробити стиль .gitignore виключаючи папку.
Я хотів би проковтнути це:
ignoreme
і відповідати цим:
/folder/path/here/to/something/ok.js
/another/folder/path.js
/test.js
але не збігаються з цими:
/folder/ignoreme/something.js
/folder/path/here/to/ignoreme/metoo/file.js
Це буде відповідати усьому, включаючи ignoreme:
/**/*.js
Тож я зрозумів, що можу зробити щось на зразок:
/**/!(ignoreme)/**/*.js
але це відповідає файлам у папці ignoreme.
Я звик до регулярних виразів, але, здається, не можу зрозуміти, як тут повторити шаблон чи щось інше - я також пробував такі речі, як:
/(!(ignoreme)|*)*/*.js
сподіваючись, контейнер повториться, але це не спрацьовує, він просто не відповідає усьому.
Будь-який спосіб або передати регулярний вираз до grunt-файлів, або зробити так, щоб це працювало для мене?
Оновлення:
Ось як я зараз маю справу з цією проблемою:
var pattern = /\/ignoreme\//
var files = grunt.file.expandFiles(arrayOfFilesPassedToMinimatch).filter(function(f){
return !pattern.test(f)
})
Мені все одно буде цікаво, якщо можливі виключення з папки в мінімач.
map
- це результат,files
що містить масивTRUE
іFALSE
значень.filter
буде правильно встановленоfiles
як список відфільтрованих шляхів.