从入门到精通:tiny-glob完整API指南与实用示例
【免费下载链接】tiny-globSuper tiny and ~350% faster alternative to node-glob项目地址: https://gitcode.com/gh_mirrors/ti/tiny-glob
tiny-glob是一款超级轻量级且比node-glob快约350%的文件匹配工具,专为需要高效处理文件路径匹配的开发者设计。无论是在构建工具、自动化脚本还是日常开发中,tiny-glob都能以其小巧的体积和卓越的性能帮助你快速定位所需文件。
为什么选择tiny-glob?
在现代前端开发中,文件匹配是一个常见需求。tiny-glob作为node-glob的替代品,具有以下显著优势:
- 极致小巧:核心代码精简,安装包体积远小于同类工具
- 闪电速度:性能比node-glob提升约350%,处理大量文件时优势明显
- API简洁:提供直观的API接口,学习成本低
- 兼容性好:支持标准的glob模式匹配,易于迁移现有项目
快速开始:安装与基础使用
一键安装步骤
通过npm或yarn快速安装tiny-glob:
npm install tiny-glob # 或 yarn add tiny-glob如需从源码安装,可克隆仓库:
git clone https://gitcode.com/gh_mirrors/ti/tiny-glob cd tiny-glob npm install最简单的使用示例
tiny-glob提供了直观的API,让你轻松实现文件匹配:
const glob = require('tiny-glob'); // 异步匹配当前目录下所有.js文件 glob('*.js').then(files => { console.log(files); // 输出匹配到的文件列表 }); // 同步匹配 const files = require('tiny-glob/sync')('*.js'); console.log(files);核心API详解
异步匹配函数:glob()
异步版本是tiny-glob的主要接口,定义在index.js中:
glob(pattern, options) -> Promise<Array<string>>参数说明:
pattern:glob匹配模式字符串options:配置选项对象,支持以下属性:cwd:当前工作目录,默认为'.'dot:是否包含点文件(隐藏文件),默认为falseabsolute:是否返回绝对路径,默认为falsefilesOnly:是否只返回文件(排除目录),默认为falseflush:是否重置缓存,默认为false
同步匹配函数:glob.sync()
同步版本定义在sync.js中,使用方式与异步版本类似,但会阻塞当前进程:
globSync(pattern, options) -> Array<string>参数与异步版本完全相同,适合在不需要异步操作的场景使用。
实用匹配模式示例
基础匹配模式
| 模式 | 描述 | 示例 |
|---|---|---|
* | 匹配任意字符(不包括路径分隔符) | *.js匹配所有.js文件 |
** | 匹配任意层级的目录 | src/**/*.js匹配src下所有.js文件 |
? | 匹配单个字符 | file?.txt匹配file1.txt、fileA.txt等 |
[abc] | 匹配括号内的任意字符 | [0-9].js匹配0.js、1.js等 |
{a,b} | 匹配花括号内的任意选项 | {*.js,*.ts}匹配所有.js和.ts文件 |
常用场景示例
1. 匹配特定类型文件
// 匹配所有JavaScript文件 glob('**/*.js').then(files => console.log(files)); // 匹配所有图片文件 glob('**/*.{png,jpg,jpeg,gif}').then(images => console.log(images));2. 包含隐藏文件
// 匹配所有.md文件,包括隐藏文件 glob('**/*.md', { dot: true }).then(files => console.log(files));3. 获取绝对路径
// 获取所有测试文件的绝对路径 glob('test/**/*.js', { absolute: true }).then(testFiles => console.log(testFiles));4. 仅匹配文件(排除目录)
// 仅匹配src目录下的.js文件,排除子目录 glob('src/*.js', { filesOnly: true }).then(jsFiles => console.log(jsFiles));高级配置选项
缓存控制
tiny-glob默认会缓存文件系统信息以提高性能。在需要刷新缓存时,可使用flush选项:
// 刷新缓存并重新匹配 glob('**/*.js', { flush: true }).then(files => console.log(files));自定义工作目录
使用cwd选项可以指定相对哪个目录进行匹配:
// 在src目录中搜索,但返回相对于项目根目录的路径 glob('**/*.js', { cwd: 'src' }).then(files => console.log(files));性能优化技巧
- 精确模式优先:尽量使用精确的匹配模式,避免过度使用
**通配符 - 合理使用缓存:在多次匹配相同目录结构时,不使用
flush选项以利用缓存 - 文件过滤:使用
filesOnly选项减少不必要的目录匹配 - 路径限制:在大型项目中,限制匹配的目录深度可以显著提高性能
常见问题解答
Q: tiny-glob与node-glob有什么区别?
A: tiny-glob主要优势在于体积小(约1KB)和速度快(提升约350%)。它实现了node-glob的核心功能,但移除了一些高级特性,更适合追求性能和精简的场景。
Q: 如何匹配包含特殊字符的文件?
A: 对于包含*、?、[等特殊字符的文件,需要使用反斜杠\进行转义:
glob('file\*.txt').then(files => console.log(files)); // 匹配file*.txtQ: 为什么有些隐藏文件没有被匹配到?
A: 默认情况下,tiny-glob不匹配隐藏文件(以.开头的文件或目录)。需要设置{ dot: true }选项才能包含隐藏文件。
总结
tiny-glob以其小巧的体积和卓越的性能,成为文件路径匹配的理想选择。通过本文介绍的API和示例,你可以快速掌握tiny-glob的使用方法,并在实际项目中灵活应用。无论是简单的文件匹配还是复杂的目录搜索,tiny-glob都能帮助你高效完成任务。
如果你想深入了解tiny-glob的实现细节,可以查看项目源码:
- 异步实现:index.js
- 同步实现:sync.js
- 类型定义:index.d.ts、sync.d.ts
【免费下载链接】tiny-globSuper tiny and ~350% faster alternative to node-glob项目地址: https://gitcode.com/gh_mirrors/ti/tiny-glob
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考