Шаблон glob узла включает все js кроме определенных папок

У меня есть проект, который выглядит так

ls foo/
- file0.js
- a/file1.js
- b/file2.js
- c/file3.js
- d/file4.js

Как мне написать шаблон glob, чтобы исключить папку c & d, но получить все другие файлы javascript? Я искал здесь пример, но ничего не могу заставить работать.

Я думаю, что решение будет выглядеть примерно так:

glob('+(**/*.js|!(c|d))', function(err, file) {
  return console.log(f);
});

Я хочу обратно

- file0.js
- a/file1.js
- b/file2.js

1 ответ

Решение

Есть опция игнорирования, которую я застеклил в файле readme:

glob('**/*.js', { ignore: '{c,d}/**' }, cb)

Это исключит обе папки c + d из совпадения. Больше здесь

Для среды, где нет второго параметра для установки исключения, мы можем добиться такого исключения, используя шаблон, показанный в примере ниже:

Шаблон

/src/**/!(els)/*.scss

состав

/src/style/kit.scss
/src/style/els/some.scss
/src/style/els/two.scss

результат

он выберет только /src/style/kit.scss

Мы можем использовать http://www.globtester.com/ для быстрого тестирования онлайн.

Обновить

Если мы работаем с Gulp Task Runner. Или некоторые другие инструменты или классы, которые предлагают второй или несколько параметров для исключения. Или просто несколько глобальных селекторов, которые тоже поддерживают исключение. Тогда мы можем сделать в качестве примера ниже для глотка шоу:

для глотка

Мы передаем массив вместо простой строки (несколько селекторов globs, один применяется за другим, чтобы добавить больше файлов или исключить)

src(['src/style/**/*.{scss,sass}', '!(src/style/els/**)'])

Мы можем иметь несколько исключений

watch(['src/style/**/*.{scss,sass}', '!(src/style/els/**)', '!(src/style/_somefileToExclude.scss)'])

В gulp вы можете использовать это с любым методом, который поддерживает массив как селекторы globs. src а также watch это то, что я использовал это для.

Примечание. Если вы хотите исключить папку и все ее подпапки, мы используем ** как указано выше, а не **/* который не будет работать. Если вам нужны определенные типы файлов (расширение), вы можете использовать **/*.scss например.

Другие вопросы по тегам