Когда я некоторое время назад использовал 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
Возвращаемое значение в событии.
В этой работе используетсяCreative Commons Attribution-NonCommercial-No Derivatives 4.0 Международная лицензияЛицензия.Название блога:Блог Ван Лепина
Адрес блога CSDN:blog.csdn.net/lecepin