Vite和pnpm都在用的tinyglobby文件匹配库

大家好,我是农村程序员,独立开发者,行业观察员,前端之虎陈随易。我会在这里分享关于 独立开发编程技术思考感悟 等内容,欢迎关注。

技术群与交朋友请在个人网站联系我,网站 1️⃣:chensuiyi.me,网站 2️⃣:me.yicode.tech

如果你觉得本文有用,一键三连 (点赞评论转发),就是对我最大的支持~


文件匹配库,作用就是使用 glob 语法,来匹配并查找文件的。

js 复制代码
import { glob, globSync } from 'tinyglobby';

await glob(['files/*.ts', '!**/*.d.ts'], { cwd: 'src' });
globSync('src/**/*.ts', { ignore: '**/*.d.ts' });

比如本文分享的 tinyglobby,使用方法如上 👆,从当前目录的 src 目录下,匹配 files 目录下的所有 ts 文件,并排除 .d.ts 类型定义文件。

一个 * 表示匹配任意文件名,2 个 ** 表示匹配多个嵌套目录,感叹号 ! 表示排除某些文件,这就是 glob 匹配语法。

这种方法,比我们通过原始的 fs 模块去读取目录,再去根据正则过滤文件名要方便很多,所以很多流行的库都在使用,比如 vitepnpmvitestlernanuxtastrovitepress 等等。

而同类型的匹配库还有 fast-globglobby 等等,但以上列举的流行项目都不谋而合地使用 tinyglobby,那么 tinyglobby 究竟有什么魔魅力呢?。

我们通过依赖关系图来查看一下,地址:https://node-modules.dev

👆 globby 依赖关系图。

👆 fast-glob 依赖关系图。

👆 tinyglobby 依赖关系图。

从依赖包数量上来说,globby 23 个,fast-glob 17 个,tinyglobby 3 个,tinyglobby 完胜。

同时呢,根据 tinyglobby 的官方说明来看:

globbyfast-glob 展现了一些其他 globbing 库所没有的行为,这使得手动替换成更小更好的版本变得困难。

也就是跟其他文件匹配库比起来,fast-globglobby 都或多或少有一些自己的个性化,导致在某些比较特殊的情况下兼容比较麻烦。

tinyglobby 创建于2024年7月,到现在刚好1年时间,属于比较新的项目,同时也能更好地站在前人的肩膀上,做得更好。

开源地址:https://github.com/SuperchupuDev/tinyglobby

在 AI 大行其道的今天,虽然很多编程问题它都能解决,甚至表面看起来做得更好,但精益求精的问题,还是需要用我们自己的双手双眼去维护。

相关推荐
涡能增压发动积2 天前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
Wenweno0o2 天前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨2 天前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz2 天前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
swg3213212 天前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
从前慢丶2 天前
前端交互规范(Web 端)
前端
tyung2 天前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald2 天前
SpringBoot - 自动配置原理
java·spring boot·后端
CHU7290352 天前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing2 天前
Page-agent MCP结构
前端·人工智能