Шаблоны Glob соответствуют шаблонам, используя

Node.js внешний интерфейс

Когда я некоторое время назад использовал workbox, при выполнении предварительного кэширования шаблон сопоставления был основан на шаблоне Glob Pattern, поэтому я прочитал соответствующие документы.

Давайте переведем использование node-glob, исходный текст:GitHub.com/Исаакс/узел…


Glob

Как и в оболочке, используйте*и другие шаблоны сопоставления для сопоставления файлов.

Glob реализован на основе Javascript с использованиемminimatchБиблиотека для соответствия.

использовать

использоватьnpmУстановить

npm i glob
var glob = require("glob")

// options可选
glob("**/*.js", options, function (er, files) {
  // files是匹配到的文件数组
  // 如果`options`中的`nonull`为true, 当未发现时, files返回["**/*.js"]
  // `er`是一个错误对象或者null
})

Начало работы с глобусами

«Глоб» — это шаблон, аналогичный вводу в командной строке.ls *.js, или в.gitignoreзаписать в файлbuild/*.

При анализе шаблонов пути используйте запятые для разделения фигурных скобок, а отделенная часть может содержать/,такa{/b/c,bcd}будет расширен доa/b/cа такжеabcd.

Следующие символы имеют некоторые специальные эффекты при использовании в сопоставлении путей:

  • *: Совпадение 0 или более строк по одному пути.
  • ?: соответствует строке.
  • [...]: соответствует строке в указанном диапазоне, подобно регулярному выражению.[]. если[]Первая строка в!или^, он соответствует любой строке, не входящей в диапазон.
  • !(pattern|pattern|pattern): соответствует тому, что не соответствует предоставленному шаблону.
  • ?(pattern|pattern|pattern): Соответствует 0 или 1 раз в указанном шаблоне.
  • +(pattern|pattern|pattern): Совпадение 1 или более раз в указанном шаблоне.
  • *(a|b|c): соответствует 0 или более раз в указанном шаблоне.
  • @(pattern|pat*|pat?erN): точно соответствует тому, что находится в предоставленном шаблоне.
  • **:а также*то же самое, может соответствовать 0 или более путям, и**Может соответствовать текущему каталогу и подкаталогам. Но не могу захватить каталог с символической ссылкой.

.точка

Если соответствующий файл или часть каталога начинается с.начинается, если соответствующий путь также не начинается с.start, иначе ни один шаблон не будет сопоставлен.

Напримерa/.*/cшаблон будет соответствоватьa/.b/c. Однакоa/*/cшаблон не будет сопоставлен, потому что*не со.начал.

Вы можете установить параметры,dot:true, пусть Глоб поставит.как обычная строка.

Соответствие базового имени

Если вы установите в опцииmatchBase:true, когда нет/, он будет соответствовать в любом каталоге. Например*.jsбудет соответствоватьtest/simple/basic.js.

пустой набор

Если файлы не совпадают, он вернет пустой массив[]. Это не то же самое, что оболочка, которая возвращает себя, если не совпадает. Например:

$ echo a*s*d*f
a*s*d*f

Вы можете установить параметры,nonull:true, чтобы получить тот же эффект, что и в оболочке bash.

glob.hasMagic(pattern, [options])

еслиpatternимеет любую специальную строку, она возвращается какtrue, иначе возвращается какfalse.

Уведомление:optionsповлияет на результаты. Если установлено в опцияхnoext:true,Так+(a|b)Не будет рассматриваться как магический режим. если режим поддерживает{}выражение, то оно тоже относится к Магии, напримерa/{b/c,x/y}. если опция не установленаnobrace:true.

glob(pattern, [options], cb)

  • pattern {String}: соответствует шаблону.
  • options {Object}
  • cb {Function}
    • err {Error | null}
    • matches {Array<String>}: Массив имен файлов после совпадающего шаблона.

Выполните асинхронный глобальный поиск.

glob.sync(pattern, [options])

  • pattern {String}: Соответствие шаблону.
  • options {Object}
  • return: {Array<String>}: имя файла в шаблоне соответствия.

Выполните асинхронный глобальный поиск.

Class: glob.Glob

путем создания экземпляраglob.GlobсоздаватьGlobобъект.

var Glob = require("glob").Glob
var mg = new Glob(pattern, options, cb)

этоEventEmitter. Он немедленно выполняет обход каталога для сопоставления.

new glob.Glob(pattern, [options], [cb])

  • pattern {String}: соответствует шаблону.
  • options {Object}
  • cb {Function}: Откат в случае успеха или неудачи.
    • err {Error | null}
    • matches {Array<String>}: Массив совпадающих имен файлов.

Обратите внимание, что если опция установленаsyncфлаг, то результат сопоставления может быть передан черезg.foundПолучать.

Атрибуты

  • minimatch: используется глобусомminimatchобъект.
  • options: входящий объект опции.
  • aborted: boolean, при вызовеabort()будет установлен наtrue. существуетabort()Глобальный поиск больше невозможен послеstatCacheчтобы избежать повторения системных вызовов.
  • cache: Объект, может иметь следующие значения:
    • false- Путь не существует.
    • true- Путь существует.
    • 'FILE'- Путь существует, но не является каталогом.
    • 'DIR'- Путь существует и является каталогом.
    • [file, entries, ...]- путь существует, результатом является массив, что-то вродеfs.readdirрезультат.
  • statCache:fs.statРезультаты кэшируются, чтобы избежать многократного вычисления одного и того же пути.
  • symlinks: запись, какие пути являются символическими ссылками, с**связанные с режимом.
  • realpathCache:Перейти кfs.realpathнеобязательный параметр, чтобы избежать ненужных системных вызовов. Хранится в объекте экземпляра Glob, может использоваться повторно.

мероприятие

  • end: после завершения сопоставления получен результат сопоставления. когдаnonullЕсли установлено, если совпадающий результат отсутствует, исходная строка совпадающего шаблона будет включена в возвращаемый массив. По умолчанию совпадающие результаты сортируются, если не установленоnosort.
  • match: Запускается каждый раз, когда найден совпадающий результат, и результат содержит совпадающую информацию. Он не выполняет дедупликацию и не разрешает реальные пути.
  • error: Запускается при возникновении непредвиденной ошибки. Если установленоoptions.strict, то любойfsзагораются ошибки.
  • abort:abort()Уволен, когда его позвали.

метод

  • pause: временно остановить поиск.
  • resume: возобновить поиск.
  • abort: прекратить поиск.

Опции

всеMinimatchпараметры могут быть переданы в Glob для изменения шаблона сопоставления, в дополнение к добавлению некоторых уникальныхglob-specific.

Если не указано иное, все параметры по умолчанию равныfalse.

Все параметры также добавляются к объекту Glob.

Если вы выполняете несколько операций glob, вы можете передать параметры объекта Glob последующим операциям для использования, что удобно для некоторых пользователей.statа такжеreaddirпередача. могут быть разделеныsymlinks statCache realpathCache cacheвозможность ускорить параллельные операции глобуса.

  • cwd: текущий каталог для поиска. По умолчаниюprocess.cwd().
  • root/Место монтирования для начала. По умолчаниюpath.resolve(options.cwd, "/")(системы Unix/, некоторые другие системы WindowsC:\).
  • dot: в обычном режиме и**режим содержит.. Обратите внимание, что точки, определенные в строке шаблона, всегда будут соответствовать.файл совпадает.
  • nomount: шаблон сопоставления по умолчанию начинается с/Started перейдет к точке монтирования корневого каталога, чтобы вернуть правильный путь к файлу. настраиватьdebugфлаг, чтобы отключить это поведение.
  • mark: добавить в соответствие каталога/. Обратите внимание, что для этого требуются дополнительныеstatпередача.
  • nosort: Результаты не сортируются.
  • stat:настраиватьtrueСтатистика показывает все результаты. Это может ухудшить производительность и совершенно не нужно, если толькоreaddirНенадежный признак того, что файл существует.
  • silent: При чтении каталога возникла ошибка исключения и запрошеноstderrРаспечатать информацию о тревоге. установить опциюsilentчтобы отключить предупреждающее сообщение.
  • strict: при попытке прочитать каталог и обнаружении ошибки исключения продолжится поиск дополнительных совпадений. настраиватьstrict, при возникновении этих условий выдается ошибка.
  • cacheможет выглядеть так жеcacheАтрибуты. Передайте ранее сгенерированный объект кеша, чтобы сохранить некоторыеfsпередача.
  • statCache: Кэш результатов информации о файловой системе для предотвращения ненужныхstatпередача. Обычно вам не нужно устанавливать его, если вы знаете, что файловая система не изменится при вызове, вы можете установитьstatCacheИзglob()Объект параметров передается другому при вызове.
  • symlinksКэш известных символических ссылок. разбор**При сопоставлении вы можете передать последний сгенерированный объект символической ссылки, чтобы сохранитьstatпередача.
  • syncУстарело: использоватьglob.sync(pattern, opts)альтернатива.
  • nounique: В некоторых случаях,{}Шаблон может привести к тому, что один и тот же файл появится в результате несколько раз. По умолчанию предотвращает дублирование значений в результате. Установка этого свойства отключает это поведение.
  • nonull: Set возвращает не пустой массив, а массив, содержащий сам шаблон. Этоglob(3)значение по умолчанию в .
  • debug: После включения будетminimatchа такжеglobВключить ведение журнала.
  • nobrace: не расширяйте фигурные брекеты, как в{a,b}а также{1..3}.
  • noglobstar: несоответствие для нескольких имен файлов**(т.е. будет заменено обычным*).
  • noext: не соответствует+(a|b)шаблон "extglob".
  • nocase: совпадение без учета регистра. Примечание: в некоторых системах без учета регистраno-magicШаблон будет соответствовать по умолчанию,statа такжеreadirне выдаст ошибку.
  • matchBase: если шаблон не содержит/строка, а затем выполнить сопоставление только на основе базового имени. то есть*.jsбудет считаться**/*.js, будет соответствовать всем js во всех каталогах.
  • nodir: соответствует только файлам, а не каталогам. (Примечание: соответствует только каталогам, просто добавьте в конце шаблона/)
  • ignore: Добавляет массив шаблонов или шаблонов глобусов для исключения совпадений. Уведомление,ignoreрежим всегдаdot:true, другие настройки недействительны.
  • follow:**режиме, получить доступ к каталогу символической ссылки. Обратите внимание, что это может привести к большому количеству дублирующихся ссылок в случае циклической ссылки.
  • realpath: Установить какtrueбудет вызываться по всем результатамfs.realpath. При неразрешенных символических ссылках возвращает полный абсолютный путь соответствующего результата. (хотя обычно это битая символическая ссылка)
  • absolute: Установите значение true, чтобы получить абсолютный путь в совпавшем результате. а такжеrealpathотличается, это также влияетmatchВозвращаемое значение в событии.

Название блога:Блог Ван Лепина

Адрес блога CSDN:blog.csdn.net/lecepin

知识共享许可协议В этой работе используетсяCreative Commons Attribution-NonCommercial-No Derivatives 4.0 Международная лицензияЛицензия.
Категории