允许你使用*等符号,来写一个glob规则,来获取匹配对应规则文件,基于javascript。
调用格式实例
var glob = require("glob")
// options 是可选的
glob("**/*.js", options, function (er, files) {
// files 是匹配到的文件的数组.
// 如果 `nonull` 选项被设置为true, 而且没有找到任何文件,那么files就是glob规则本身,而不是空数组
// er是当寻找的过程中遇的错误
})
特殊字段实例 (正则)
1 *:匹配该路径段中0个或多个任意字符
2 ? :匹配该路段中1个任意字符
3 [...]
:匹配该路径段中在指定范围内字符(注意不能组合,只能是其中一个字符)
*(pattern)|(pattern)|(pattern)
:匹配括号中多个模型的0个或多个或人一个的组合(注意|
前后不能有空格)
!(pattern|pattern|pattern)
:匹配不包含任何模型(注意!(pattern|pattern|pattern)
不等于!(*pattern|pattern|pattern)
)
?(pattern|pattern|pattern)
:匹配多个模型中的0个或任意1个,它和4的区别是,不可以组合,必须完全匹配
+(pattern|pattern|pattern)
:匹配多个模型中的1个或多个,它和4的区别是必须有一个,为空不匹配
- '@(pattern|pat*|pat?erN)':匹配多个模型中的任意1个
**
:和1一样,可以匹配任何内容,但**不仅匹配路径中的某一段,而且可以匹配a/b/c
这样带着/
的内容,所以,它还可以匹配子文件夹下的文件。
//*:匹配路径中某部分:0个或多个字符获取js目录下的所有js文件.(不包括以'.'开头的文件)
glob("js/*.js",function (er, files) {
console.log(files)
})
实例用法
var glob = require('glob');
// 获取指定路径下的入口文件
function getEntries(globPath) {
var files = glob.sync(globPath),
entries = {};
files.forEach(function(filepath) {
var split = filepath.split('/');
var name = split[split.length - 2];
var entity = [];
entity.push('./' + filepath);
entries[name] = entity;
});
return entries;
}
entry: getEntries('app/**/index/index.js'),