Bun v1.4.4 实战:用 bun fmt 替掉 prettier 的 5 个步骤

Bun v1.4.4内置了 bun fmt,一个与 Prettier 配置兼容的格式化工具。官方基准:Prettier 自己仓库 2,616 个文件,bun fmt 59.7 ms,Prettier 3.9.10 要 17.1 s。本文给出一条可回滚的迁移路径。

第 1 步:bun fmt --doctor 看兼容性

在项目根目录跑:

bash 复制代码
bun fmt --doctor

它会告诉你读的是哪份配置(.prettierrc / .oxfmtrc.json / .editorconfig / prettier.config.*),以及哪些包可以卸载。我搭的测试项目输出:

复制代码
Using .prettierrc (Prettier config)
You can remove: @trivago/prettier-plugin-sort-imports, prettier,
prettier-plugin-tailwindcss

Tailwind class 排序、package.json 排序、import 排序原来都是插件,现在内置。13,670 个真实 package.json 里,13,644 个与"Prettier 3.9.9 + 插件"输出字节级一致。

第 2 步:CI 里加 --check,别急着改默认命令

bash 复制代码
bun fmt --check   # 列出待格式化文件,退出码 1

先让它在 CI 里跑一周。全绿之前,本地照常用旧命令,避免大面积 diff 污染 review。

第 3 步:用 --staged 替掉 lint-staged

sh 复制代码
# .husky/pre-commit
#!/bin/sh
bun fmt --staged

--staged 格式化暂存区文件并重新 stage;--changed(或 --changed=origin/dev)只格式化与默认分支有差异的文件。

第 4 步:bunfig.toml 固化团队规范

toml 复制代码
[fmt]
printWidth = 100
semi = false
sortImports = true
sortTailwindcss = true
sortPackageJson = true

[[fmt.overrides]]
files = ["*.test.ts"]
options = { printWidth = 120 }

monorepo 里 bun fmt 从工作目录向上找最近的带 [fmt] 的 bunfig.toml。

第 5 步:确认无回退后卸载

一周内没有"改回 prettier"的 commit,就可以把 prettier、lint-staged、@trivago/prettier-plugin-sort-imports 之类移出 devDependencies。

受控实验与边界

三行烂格式代码实测:--check 报出文件,bun fmt 21.43 毫秒改完。date-fns 全仓(2,025 个文件,带 .oxfmtrc.json)第一遍 2,643 ms、第二遍 916 ms。

边界说清楚:Prettier 测试套件 9,731 个用例,bun fmt 过 99.1%;330 个开源仓库与 oxfmt 输出一致率 94.6%。有 4 处故意不同------CSS font-family: Font\ Awesome 这类会被 Prettier 改坏语义的写法,bun fmt 选择保留。用了 Prettier 私有插件的语言(如 Astro)会回退到项目内安装的 Prettier。

顺带:bun:sqlite 用户定义函数

同版本的 bun:sqlite 补上了 UDF,签名与 better-sqlite3 一致:

js 复制代码
db.function("add2", (a, b) => a + b);
db.query("SELECT add2(12, 4) AS sum").get(); // { sum: 16 }

db.aggregate("add_all", {
  start: 0,
  step: (total, value) => total + value,
});
db.query("SELECT add_all(dollars) AS total FROM expenses").get();
相关推荐
箓维1 小时前
UDP Socket的实现
网络·1024程序员节
AIyy8661 小时前
个人在线知识库怎么搭?从三种知识形态说起
1024程序员节
会飞的大可1 小时前
AI 新闻周报 | 2026年10月19日 — 10月24日
1024程序员节
艸肅1 小时前
Docker 国内镜像源配置
linux·ubuntu·docker·1024程序员节
CRMEB系统商城1 小时前
服装连锁的导购分销与企微私域
java·大数据·开发语言·人工智能·小程序·php·1024程序员节
拓恒技术1 小时前
城市管理中的无人机AI识别算法:架构、场景与落地
人工智能·算法·视觉检测·无人机·1024程序员节
成信吴彦祖1 小时前
当前专业的无人机RID侦测主站供应商主要有哪些
python·1024程序员节
玥轩_5211 小时前
鸿蒙远程控制软件推荐:鸿蒙手机平板远程控制电脑哪个好用?
1024程序员节