исключение папки grunt (minimatch/glob)
у меня есть ситуация, когда я пытаюсь использовать 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)
})
мне все равно было бы интересно, если папка исключает возможны в minimatch.
1 ответ:
В настоящее время в процессе развития версии 0.4.0 а,
grunt.file.expand
метод теперь поддерживает исключения и делает это, возможно, менее сложным способом, чем базовая библиотека сопоставления minimatch. Это возможно, потому чтоgrunt.file.expand
принимает несколько шаблоны (в то время как minimatch принимает только один).С ворчание.файл.разверните раздел документация:
этот метод принимает либо шаблоны подстановочных знаков, разделенных запятыми, либо массив шаблонов. Пути, соответствующие шаблонам, которые начинаются с ! будет исключен из возвращаемого массива. Шаблоны обрабатываются по порядку, поэтому порядок включения и исключения является значительным.
это означает, что вы можете указать
['/**/*.js', '!**/ignoreme/**']
и в то время как первый шаблон будет добавить всех.js
файлы в результирующий набор, второй шаблон будет затем удалить все/ignoreme/
файлы из результирующего набора.посмотри хрюкать.файл.матч модульных тестов если вы очень любопытно.
обратите внимание, что версия grunt, предлагающая эту функциональность, официально не была выпущена, но если вы заинтересованы в ее использовании в проекте, см. когда я смогу использовать функцию " X " в разработке? запись FAQ.