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

相关推荐
万少1 小时前
HarmonyOS 开发必会 5 种 Builder 详解
前端·harmonyos
橙序员小站3 小时前
Agent Skill 是什么?一文讲透 Agent Skill 的设计与实现
前端·后端
怒放吧德德3 小时前
Netty 4.2 入门指南:从概念到第一个程序
java·后端·netty
雨中飘荡的记忆5 小时前
大流量下库存扣减的数据库瓶颈:Redis分片缓存解决方案
java·redis·后端
炫饭第一名6 小时前
速通Canvas指北🦮——基础入门篇
前端·javascript·程序员
NineData6 小时前
数据库迁移总踩坑?用 NineData 迁移评估,提前识别所有兼容性风险
数据库·程序员·云计算
王晓枫6 小时前
flutter接入三方库运行报错:Error running pod install
前端·flutter
符方昊6 小时前
React 19 对比 React 16 新特性解析
前端·react.js
ssshooter6 小时前
又被 Safari 差异坑了:textContent 拿到的值居然没换行?
前端
开心就好20256 小时前
UniApp开发应用多平台上架全流程:H5小程序iOS和Android
后端·ios