什么是glob?
glob是由普通字符和/或通配字符组成的字符串,用于匹配文件路径。可以利用一个或多个glob在文件系统中定位文件
这是JavaScript中的全局实现。它使用minimatch 库进行匹配。
使用
使用npm安装
npm install glob
const glob = require('glob')
// options is optional
glob("**/*.js", options, function (er, files) {
// files is an array of filenames.
// If the `nonull` option is set, and nothing
// was found, then files is ["**/*.js"]
// er is an error object or null.
})
glob Primer (glob 引言)
“ Globs”是您ls .js在命令行或build/类似.gitignore文件中执行操作时键入的模式。
在解析路径零件模式之前,将支撑部分扩展为一组。括号部分以开头,{结尾为},其中包含任意多个逗号分隔的部分。括号部分可能包含斜杠字符,因此a{/b/c,bcd}将扩展为a/b/c和abcd。
在路径部分中使用以下字符具有特殊的魔术含义:
- 在单个路径部分中匹配0个或更多字符
- ? 符合1个字元
- [...]匹配一个字符范围,类似于RegExp范围。如果范围的第一个字符是!或,^则它匹配不在范围内的任何字符。
- !(pattern|pattern|pattern) 匹配与提供的任何模式都不匹配的任何内容。
- ?(pattern|pattern|pattern) 匹配零个或一次出现的提供的模式。
- +(pattern|pattern|pattern) 匹配提供的模式的一个或多个出现。
- *(a|b|c) 匹配零个或多个出现的提供的模式
- @(pattern|pat*|pat?erN) 完全匹配提供的一种模式
- **如果路径部分中只有一个“ globstar”,则它将匹配零个或多个搜索匹配项的目录和子目录。它不对符号链接的目录进行爬网。
点
如果文件或目录路径部分以a.作为第一个字符,则它将与任何全局模式都不匹配,除非该模式的对应路径部分也以a.作为其第一个字符。
例如,该模式a/./c将与处的文件匹配a/.b/c。但是,该模式a//c不会,因为*它不是以点字符开头。
通过dot:true在选项中进行设置,可以使glob将点视为普通字符 。
方法
glob.hasMagic(pattern,[options])
true如果模式中有任何特殊字符,则返回, false否则返回。
请注意,这些选项会影响结果。如果noext:true在options对象中设置了,那么+(a|b)将不会被视为魔术模式。如果模式具有大括号扩展名(如a/{b/c,x/y} 这样),则认为这是神奇的,除非nobrace:true在选项中设置了该扩展名。
glob(pattern,[options],cb)
- pattern {String} 要匹配的图案
- options {Object}
- cb {Function}
- err {Error | null}
- matches {Array
} 找到与模式匹配的文件名
执行异步全局搜索
glob.sync(pattern,[options])
- pattern {String} 要匹配的图案
- options {Object}
- 返回:{Array
}找到与模式匹配的文件名
执行同步全局搜索。
资料
glob npm