大家好,我是农村程序员,独立开发者,行业观察员,前端之虎陈随易。我会在这里分享关于 独立开发
、编程技术
、思考感悟
等内容,欢迎关注。
技术群与交朋友请在个人网站联系我,网站 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 模块去读取目录,再去根据正则过滤文件名要方便很多,所以很多流行的库都在使用,比如 vite
、pnpm
、vitest
、lerna
、nuxt
、astro
、vitepress
等等。
而同类型的匹配库还有 fast-glob
、globby
等等,但以上列举的流行项目都不谋而合地使用 tinyglobby
,那么 tinyglobby
究竟有什么魔魅力呢?。
我们通过依赖关系图来查看一下,地址:https://node-modules.dev
。

👆 globby 依赖关系图。

👆 fast-glob 依赖关系图。

👆 tinyglobby 依赖关系图。
从依赖包数量上来说,globby
23 个,fast-glob
17 个,tinyglobby
3 个,tinyglobby
完胜。
同时呢,根据 tinyglobby 的官方说明来看:
globby
和fast-glob
展现了一些其他 globbing 库所没有的行为,这使得手动替换成更小更好的版本变得困难。
也就是跟其他文件匹配库比起来,fast-glob
和 globby
都或多或少有一些自己的个性化,导致在某些比较特殊的情况下兼容比较麻烦。
tinyglobby
创建于2024年7月,到现在刚好1年时间,属于比较新的项目,同时也能更好地站在前人的肩膀上,做得更好。
开源地址:https://github.com/SuperchupuDev/tinyglobby
在 AI 大行其道的今天,虽然很多编程问题它都能解决,甚至表面看起来做得更好,但精益求精的问题,还是需要用我们自己的双手双眼去维护。