glob允许使用规则,从而获取对应规则匹配的文件。这个glob工具基于javascript.它使用了 minimatch 库来进行匹配
npm install glob
const glob = require(‘glob‘)
glob方法可以传入三个参数:
1、需要进行匹配的文件的路径(有点类似于正则表达式)。2、option可选项,也可以不填写。3、回调函数,回调函数内部可以返回两个参数,一个是匹配成功后的结果会返回一个数组,如果没有匹配上不会报错会返回一个空数组,一个是失败后的结果。示例glob("**/*.js", options, function (er, files) { console.log(files)})
glob("./src/components/**/*.js", function (er, files) { console.log(files); return files});// [ ‘./src/components/index/index.js‘,// ‘./src/components/news/n.js‘,// ‘./src/components/news/news.js‘ ]
glob("./src/components/**/?.js", function (er, files) { console.log(files); return files});//[ ‘./src/components/news/n.js‘ ]
glob("./src/components/**/!(n|index).js", function (er, files) { console.log(files)})// [ ‘./src/components/news/news.js‘ ]
+(模式1|模式2|模式3):匹配所提供的模式的一个或多个事件。
*(a|b|c) :匹配所提供的模式的零个或多个事件。
@(pattern|pat*|pat?erN):匹配所提供的模式之一。
在上述案例中使用的都是异步请求,调用回调得到结果,其实glob也提供了同步返回结果的API ,在这里我只列举一个
let pattern = ‘./src/components/**/@(index|n|news).js‘;console.log(glob.sync(pattern));// [ ‘./src/components/index/index.js‘,// ‘./src/components/news/n.js‘,// ‘./src/components/news/news.js‘ ]
globby,是基于 glob,并进一步得到了增强
(async () => { const paths = await globby([‘images‘,‘photos‘],{ expandDirectories: true }); console.log(paths);})();