本文目录导读:

Biome(前身为 Rome 工具链的继任者)是一个用 Rust 编写的开源前端工具链,主要提供格式化和代码检查功能,它旨在成为 ESLint 和 Prettier 的一体化替代品。
关于是否值得使用,这取决于你的项目类型和团队需求,下面从优势、劣势和适用场景三个方面帮你分析,供你决策参考。
核心优势(为什么值得考虑)
-
极致的性能(速度非常快)
- 这是 Biome 最大的亮点,由于采用 Rust 编写,它的格式化和检查速度通常是 Prettier/ESLint 的 10-30 倍。
- 体验:在大型项目中,保存文件时的格式化几乎是瞬间完成,完全告别等待,对于 CI 流程(如
pre-commithook 或 GitHub Actions),也可以显著缩短检查时间。
-
开箱即用,配置极简
- 零配置:Biome 主张“约定优于配置”,默认配置已经非常合理,完全遵循 TypeScript/ESM 等现代 JavaScript 最佳实践。
- 告别繁琐的
.eslintrc、prettierrc和插件配置:一个文件(biome.json)就能搞定格式化和 lint 规则,且规则数量远少于 ESLint,心智负担低。
-
一体化工具(All-in-One)
- 它同时替代了 Prettier(格式化) 和 ESLint(检查),你不再需要同时管理两个工具的配置、插件和冲突规则。
- 对于新项目或小团队,可以显著简化工具链。
-
更好的默认行为
- 自动排序导入:Biome 内置了非常智能的 import 排序功能,无需额外插件(如
eslint-plugin-import或prettier-plugin-organize-imports)。 - 更安全的格式化:相比 Prettier,Biome 在某些边缘情况下的格式化结果更少引发争议(例如尾逗号的处理、HTML/CSS 格式化等)。
- 自动排序导入:Biome 内置了非常智能的 import 排序功能,无需额外插件(如
-
LSP(语言服务器协议)支持
几乎所有主流编辑器(VS Code、Neovim、JetBrains)都有官方或社区插件,提供实时格式化、错误提示和自动修复。
当前的劣势与风险(需要权衡)
-
生态系统和插件不够丰富
- 这是最大的短板,ESLint 有数千个插件(如
eslint-plugin-react-hooks、eslint-plugin-jsx-a11y等),Biome 目前只内置了约 100 条规则(截至 2025 年 5 月),覆盖了 JavaScript/TypeScript、JSX、TSX 等,但不支持 Vue、Svelte、Angular 模板等框架的特定 lint。 - 插件机制尚未成熟:虽然 Biome 宣称有插件 API,但目前仍处于早期阶段,功能非常有限,远远无法与 ESLint 插件生态抗衡。
- 这是最大的短板,ESLint 有数千个插件(如
-
对某些框架的支持不完整
- Vue / Svelte / Astro:Biome 目前不支持格式化
.vue或.svelte文件,如果你主要用这些框架,Biome 无法作为主要工具(或需要与 Prettier 并行使用)。 - JSX 限制:虽然格式化 JSX 没问题,但某些 React 特有的 lint 规则(如
rule-of-hooks)Biome 暂时没有内置。
- Vue / Svelte / Astro:Biome 目前不支持格式化
-
规则不够细粒度
- ESLint 允许针对每个文件或目录配置不同的规则集,Biome 的配置粒度较粗,对于需要严格区分“库代码”和“应用代码”的项目(Monorepo),可能不如 ESLint 灵活。
-
成熟度相对较低
- Biome 于 2023 年从 Rome 分叉出来,仍处于快速迭代中,这意味着:
- 你需要关注版本更新(可能存在 Breaking Changes)。
- 社区资源和问答(Stack Overflow)较少,遇到复杂问题可能难以找到现成解决方案。
- Biome 于 2023 年从 Rome 分叉出来,仍处于快速迭代中,这意味着:
哪些场景适合使用?(推荐)
-
新启动的项目(Greenfield Project)
如果你现在开始一个新项目并想快速搭建工具链,Biome 是最值得的选择之一,它可以让你瞬间获得高性能的格式化+Lint,避免配置地狱。
-
纯 TypeScript / JavaScript 项目
- 如果你主要编写 .ts/.tsx 文件,并且使用 React 或 Solid.js(JSX 友好),Biome 可以完美胜任。
-
追求性能、简化工具链的团队
如果你的 CI 流程经常因为 ESLint 和 Prettier 运行慢而变慢,或者团队成员对复杂的配置感到头疼,Biome 是一个很棒的替代方案。
-
Monorepo(单体仓库)项目的一键格式化
- 利用 Biome 的
--fix和--unsafe参数,可以快速对整个仓库进行一致化格式化。
- 利用 Biome 的
哪些场景建议谨慎或暂不使用?
-
项目中重度依赖 ESLint 插件
- 比如你大量使用了
eslint-plugin-unicorn、eslint-plugin-security或eslint-plugin-jsdoc等,Biome 目前无法替代这些插件。
- 比如你大量使用了
-
使用 Vue / Svelte / Angular 等模板框架
Biome 目前对这类框架的模板格式化支持为零,你仍然需要使用 Prettier + 对应插件。
-
大型遗留项目(Legacy Project)
迁移现有项目代价较高,你需要从 ESLint/Prettier 迁移配置,并且有些旧项目依赖的插件可能没有替代品。
-
对 Lint 规则有非常细粒度控制需求的团队
- 某些团队需要为测试文件、配置文件分别定义不同的规则(像 ESLint 的
Overrides机制),Biome 的includes和excludes虽然能解决一部分,但精细度尚不及 ESLint。
- 某些团队需要为测试文件、配置文件分别定义不同的规则(像 ESLint 的
实际使用决策建议
方案 A:完全替换(推荐新项目或纯 TS 项目)
- 安装:
npm install --save-dev --save-exact @biomejs/biome - 初始化:
npx @biomejs/biome init(生成biome.json) - 配置:通常只需设置
formatter和linter的开关,基本不需要额外规则。 - 使用:
- 格式化:
npx @biomejs/biome format --write ./src - 检查并修复:
npx @biomejs/biome lint --fix ./src - 一体化:
npx @biomejs/biome check --fix ./src
- 格式化:
- VSCode 插件:安装
Biome官方插件,开启editor.formatOnSave。
方案 B:混合使用(适用于有 Vue/Svelte 或需要特定插件)
- 将 Biome 用作格式化器(替代 Prettier),但保留 ESLint 用于检查(特别是 Vue/Svelte 的 lint 规则)。
- 在
biome.json中关闭linter,只启用formatter。 - 注意:需要手动处理 Biome 和 ESLint 之间可能存在的冲突规则(通常较少)。
- 非常值得用:对于新项目、纯 TypeScript/React 项目、追求高性能和简化工作流的团队,Biome 是目前最好的选择之一,它大幅简化了前端工具链,运行速度极快。
- 暂缓使用:如果项目中重度依赖 ESLint 的特定插件(如对 Vue/Svelte 的 lint),或者非常需要细粒度规则控制,建议再等一等。
一句话建议:如果你能接受它当前的生态局限性,Biome 已经是一个成熟、高效的工具,建议先在小项目中尝试,体验一下它的速度,再做决定。