从入门到精通:tiny-glob完整API指南与实用示例
2026/6/8 17:52:36 网站建设 项目流程

从入门到精通: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:是否包含点文件(隐藏文件),默认为false
    • absolute:是否返回绝对路径,默认为false
    • filesOnly:是否只返回文件(排除目录),默认为false
    • flush:是否重置缓存,默认为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));

性能优化技巧

  1. 精确模式优先:尽量使用精确的匹配模式,避免过度使用**通配符
  2. 合理使用缓存:在多次匹配相同目录结构时,不使用flush选项以利用缓存
  3. 文件过滤:使用filesOnly选项减少不必要的目录匹配
  4. 路径限制:在大型项目中,限制匹配的目录深度可以显著提高性能

常见问题解答

Q: tiny-glob与node-glob有什么区别?

A: tiny-glob主要优势在于体积小(约1KB)和速度快(提升约350%)。它实现了node-glob的核心功能,但移除了一些高级特性,更适合追求性能和精简的场景。

Q: 如何匹配包含特殊字符的文件?

A: 对于包含*?[等特殊字符的文件,需要使用反斜杠\进行转义:

glob('file\*.txt').then(files => console.log(files)); // 匹配file*.txt

Q: 为什么有些隐藏文件没有被匹配到?

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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询