在前端开发中,常常需要对文件和文件夹进行操作,例如匹配所有 js 文件或获取指定文件夹下所有 png 文件的路径等。这时可以使用 npm 包 glob-whatev 来实现这些功能。
什么是 glob-whatev
glob-whatev 是一个使用简单的 npm 包,可以用来匹配文件和文件夹,支持通配符和正则表达式,并且支持类 Unix 风格的文件夹结构路径的匹配。
安装 glob-whatev
使用 npm 安装 glob-whatev 只需要在终端输入以下命令:
npm install glob-whatev --save
注:需要先安装 Node.js 和 npm。
使用 glob-whatev
简单匹配
简单匹配可以使用通配符来实现,例如匹配所有 js 文件,只需要使用以下代码:
const glob = require('glob-whatev'); glob('*.js', function (err, files) { if (err) { console.log(err); } else { console.log(files); } });
其中 *.js
为匹配模式,返回所有符合模式的文件路径数组。
高级匹配
在 glob-whatev 中使用正则表达式进行更复杂的匹配。
const glob = require('glob-whatev'); glob(/app\/(?!node_modules)(\w+)$/, {cwd: 'src/'}, function (err, files) { if (err) { console.log(err); } else { console.log(files); } });
其中 /app\/(?!node_modules)(\w+)$/
为正则表达式,返回所有符合正则表达式的文件路径数组。{cwd: 'src/'}
表示在 src
文件夹中进行匹配。
文件夹匹配
匹配单个文件夹及其子目录下所有符合条件的文件的路径数组。
const glob = require('glob-whatev'); glob('**/*.js', {cwd: 'lib'}, function (err, files) { if (err) { console.log(err); } else { console.log(files); } });
其中 **/*.js
为匹配模式,{cwd: 'lib'}
表示在 lib
文件夹中进行匹配。**
表示匹配该文件夹及其子目录下的所有文件。
文件夹不匹配
传递 ignore
参数来排除指定的文件或文件夹。
const glob = require('glob-whatev'); glob('**/*.js', {cwd: 'lib', ignore: 'vendor/**'}, function (err, files) { if (err) { console.log(err); } else { console.log(files); } });
其中 **/*.js
为匹配模式,{cwd: 'lib'}
表示在 lib
文件夹中进行匹配。ignore: 'vendor/**'
表示不匹配 vendor
文件夹及其子目录下的所有文件。
匹配其他项目
打开一个不在当前项目中的文件夹,只需传递一个 cwd
参数即可。
const glob = require('glob-whatev'); glob('**/*.js', {cwd: '/path/to/my/dir'}, function (err, files) { if (err) { console.log(err); } else { console.log(files); } });
注:在当前文件夹中始终使用相对路径,并始终使用 posix 斜杠,这样即使在 Windows 上也能正常工作。
总结
本文介绍了 npm 包 glob-whatev 的使用方法,可以实现文件和文件夹的匹配,支持通配符和正则表达式,并且支持类 Unix 风格的文件夹结构路径的匹配,功能十分强大。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/77281