25,895 颗星、npm 周下载 2,066 万:Rust 工具链 Biome 发到 2.5.15,离「一个工具干掉 ESLint+Prettier」还差几道坎
9 月 30 日,Biome 发布 2.5.15,距离上一个补丁版 2.5.14 只隔了 14 天,距离 8 月 27 日的 2.5.11 也才五个版本迭代。这个从 Meta 已停更的 Rome 项目里分出来的 Rust 工具链,如今有 25,895 颗星、1,270 个 Fork、418 位贡献者,过去 52 周提交了 3,162 次 commit。更硬的一个数字是 npm:@biomejs/biome 在 9 月 25 日到 10 月 1 日这一周被下载 2,066 万次,最近一个月累计 6,482 万次(npm 趋势)。一个 lint/格式化工具做到这个量级,已经不是「新玩具」能解释的了。
Biome 想做的事很简单:把 Prettier、ESLint、import 排序这几个工具压进一个二进制文件。官方 README 给出的定位是,格式化端对 JavaScript、TypeScript、JSX、JSON、CSS、GraphQL 达到 97% 的 Prettier 兼容度,lint 端自 v2.5(2026 年 6 月 5 日发布,发布博客)起突破 500 条规则,一次晋升了 73 条 nursery 规则到稳定组。真正拉开差距的是 v2(代号 Biotype,2025 年 6 月):它是第一个不依赖 TypeScript 编译器就能做类型感知 lint 的工具,这套类型推断引擎由 Vercel 出资赞助;同时引入跨文件分析,noImportCycle、noUnusedClasses 这类规则会把整个模块依赖树打印进诊断信息里——比如某个 className 没有对应 CSS 定义,它能告诉你这个类名经过哪几层 import 才连到 app.css。插件生态则押在 GritQL 上,该仓库已并入 Biome 组织。
社区的真实评价比官方口径更有信息量。Hacker News 上那条 55 分、61 条评论的迁移讨论里,支持者算的账很实在:换掉 ESLint + Prettier 通常能从 package-lock.json 里砍掉 5~10 个依赖,编译成原生二进制后文章实测比 ESLint 快 15 倍以上(AppSignal 迁移实测,官方基准见 biomejs/benchmark)。反对声同样具体:有人抱怨规则配置面不够,「禁用 import」规则没法写通配符,导致不敢放进 CI;有人说规则数量离 typescript-eslint + unicorn 还差得远;还有个团队因为 useHookAtTopLevel、noUnusedVars 默认关闭这类默认值分歧,把 Biome 又换回了 Prettier + ESLint。Reddit 的「从 Biome 换回 ESLint」帖子和 r/javascript 的 AskJS 调查也是同一个结论:基础场景很爽,深度定制就露怯。
所以边界要说清楚。Biome 不是 tsc 的替代品,它做类型感知 lint 但不产出类型检查结果;它也不是打包器。它的插件是 GritQL 查询,不是 npm 上的 ESLint 插件,你积累的自研 ESLint 规则得逐条评估能否重写。Vue、Svelte、Astro 支持是 v2 之后才补上的,官方仍标注为实验性(v2.5 刚把一批 Vue 规则晋升为稳定组);Markdown、SCSS 等小众语言的格式化与 Prettier 仍有差距(官方语言支持表)。项目组在 2026 路线图里罕见地承认了欠账:watcher/scanner 曾有内存泄漏、monorepo 嵌套配置越来越难调试、Svelte 支持的对外沟通惹恼过用户——这些都会真实影响你的升级体验。同为 Rust 系的 Oxc 走的是另一条路(库优先、供 Vite 等工具二次开发),和 Biome 的「一体化成品」定位并不冲突,我们几天前刚写过 Oxc 那篇。
使用门槛其实不高:npm install --save-dev --save-exact @biomejs/biome,然后 npx @biomejs/biome migrate eslint --write --include-inspired 一键搬运 ESLint 配置,npx @biomejs/biome check --write 本地修复,CI 里跑 biome ci。配置收敛到单个 biome.json(v2 起支持嵌套配置),编辑器插件覆盖 VS Code / Open VSX,不想装环境可以直接用 WASM 在线 Playground 拿自己的文件试。真正的门槛在迁移审计:装完先别急着删 ESLint,把现有规则清单拉出来对照 500 条规则表,标记出无对应项和默认值差异。
适合谁:新项目、中小体量 TS/JS 仓库、受够了 CI 里 lint 跑几分钟的团队、想给依赖瘦身的维护者。不适合谁:重度依赖自研 ESLint 插件或深度规则定制的大型单体仓库、必须用 Prettier 小众插件处理嵌入式语言的项目、需要类型检查本身的人——tsc 该跑还得跑。
下一步建议三件事:一,把仓库里最典型的一个文件丢进 Playground,看格式化 diff 和 lint 诊断质量;二,在一个非关键分支跑 migrate eslint,导出「无法迁移规则清单」再决定要不要推;三,盯住 v2.6 和路线图里的 monorepo 工作区改进,大仓库可以等这一波落地再动。仓库在 github.com/biomejs/biome,文档在 biomejs.dev。
评论区
登录后可评论。