исключение папки 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 73

1 ответ:

В настоящее время в процессе развития версии 0.4.0 а,grunt.file.expand метод теперь поддерживает исключения и делает это, возможно, менее сложным способом, чем базовая библиотека сопоставления minimatch. Это возможно, потому что grunt.file.expand принимает несколько шаблоны (в то время как minimatch принимает только один).

С ворчание.файл.разверните раздел документация:

этот метод принимает либо шаблоны подстановочных знаков, разделенных запятыми, либо массив шаблонов. Пути, соответствующие шаблонам, которые начинаются с ! будет исключен из возвращаемого массива. Шаблоны обрабатываются по порядку, поэтому порядок включения и исключения является значительным.

это означает, что вы можете указать ['/**/*.js', '!**/ignoreme/**'] и в то время как первый шаблон будет добавить всех .js файлы в результирующий набор, второй шаблон будет затем удалить все /ignoreme/ файлы из результирующего набора.

посмотри хрюкать.файл.матч модульных тестов если вы очень любопытно.

обратите внимание, что версия grunt, предлагающая эту функциональность, официально не была выпущена, но если вы заинтересованы в ее использовании в проекте, см. когда я смогу использовать функцию " X " в разработке? запись FAQ.