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 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码2 天前
别再前后端各写一套表单校验了
java·后端
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
大勇前进2 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu2 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile2 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白802 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端