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

相关推荐
程序员黑豆3 小时前
Java 注释详解:单行、多行与文档注释的完整指南
java·前端·ai编程
剪刀石头布啊3 小时前
antd中可编辑表格中巧用useWatch实现联动高性能效果,以及定制延伸学习
前端
油丶酸萝卜别吃4 小时前
前端转全栈学习路线
前端·学习
浮生望4 小时前
前端路由进阶:History API原理与手写HistoryRouter
前端
陆枫Larry4 小时前
JavaScript 中的竞态是什么,为啥会有竟态?
前端
维克兜率天5 小时前
【维克】ARMA模型:AR与MA的完美结合
后端·restful
是未才6 小时前
从输入 URL 到页面返回:DNS、路由、TLS 与 HTTP 完整链路
java·后端·计算机网络
上海安当技术6 小时前
半天接入:USBKey RESTful API + C 动态库,Web 和 C/S 两套集成路径实战
前端·后端·restful·集成·usbkey
DevUI团队7 小时前
从“即兴创作”到“规格先行”,华为云码道(CodeArts)代码智能体持续深耕企业级规范驱动开发能力
前端·人工智能·后端
weixin_431600448 小时前
NestJS 入门(3):Guard 如何挡住未登录请求?
前端·后端·学习·nest.js