Tarquin note
用 Bun 管理前端小项目的依赖洁癖
Loading...
Tarquin note

快速安装是效率,不是放弃判断的理由。
Bun 很快,但快不是乱装依赖的理由。小项目最重要的是把运行时依赖、开发依赖和锁文件变更控制住,能用现有工具解决的问题就别再往项目里塞新包。
我更喜欢把 Bun 当成 项目纪律工具:安装快、脚本快、锁文件明确,但每一次依赖变更都得有理由。
这篇笔记不是 Bun 教程,而是小项目里使用 Bun 时的依赖洁癖。命令细节可以看 Bun 官方文档。
依赖最怕混。运行时真的要打进应用的包,和只在开发阶段使用的工具,不应该都塞进一个篮子里。
我通常按这个标准判断:
dependencies。devDependencies。bunx。比如检查 TypeScript 不需要额外写脚本时,可以直接执行:
bunx tsc --noEmit
bun.lock 不是噪音。只要改了依赖,就应该看锁文件变化是否符合预期。一个小包带进来十几个间接依赖,不一定错,但一定要知道。
不要为了消掉一个审计提示就盲目升级半个项目。安全问题要修,但依赖树也要稳,尤其是 Next、React 这种核心包。
项目脚本应该像工具箱标签,一眼知道干什么。lint、build、format 这些名字就够用,别搞一堆没人记得住的组合拳。
一个小项目常见脚本大概是:
{
"scripts": {
"dev": "next dev",
"lint": "biome check",
"build": "next build"
}
}
这类脚本的优点是没有惊喜。执行 bun run lint 就是检查,不会顺手改文件;执行 bun run build 就是构建,不会偷偷发请求。
脚本名越普通,越应该行为稳定。团队里最讨厌的就是一个叫 lint 的脚本顺手把文件全格式化了。
加包之前,我会先问三个问题:
Bun 让安装变快,是为了减少等待,不是为了降低判断标准。工具越顺手,越要把边界守住。否则项目迟早会从“小而快”变成“谁也不敢删依赖”的仓库。
| 需求 | 优先做法 | 加包条件 |
|---|---|---|
| 临时命令 | bunx | 会被反复使用 |
| 类型检查 | 复用现有 tsc | 项目确实缺能力 |
| 安全修复 | 小范围升级 |
package.json 变更。bun.lock 是否只多出预期依赖。依赖洁癖不是保守,是让项目保持可解释。