OpenRelay 2025-08-07
前端开发者深知管理多个代码质量工具的痛苦。你需要 ESLint 进行代码检查(linting),Prettier 进行代码格式化(formatting),还经常需要额外的插件来支持特定框架或功能。每个工具都需要独立配置,可能相互冲突,并拖慢你的开发流程。
Biome 提供了一种不同的方案:一个统一、高性能的工具链,用单一解决方案取代多个工具。它基于 Rust 构建,专为速度而设计,将格式化、代码检查和导入组织整合到一个连贯的包中。
本文将探讨 Biome 为何对现代前端项目具有吸引力、与现有工具的对比,以及它是否已准备好用于你的生产工作流。
核心要点
- Biome 将代码检查与格式化结合到一个基于 Rust 的单一工具中,其速度显著快于传统替代方案。
- 性能提升显著:格式化速度比 Prettier 快 25 倍,代码检查速度比 ESLint 快 15 倍。
- 语言支持有限:不支持 HTML、Markdown 或 SCSS,对 Vue/Svelte 仅有部分兼容性。
- 迁移简单:内置命令可将现有的 ESLint 和 Prettier 配置直接转换。
- 最适合以 TypeScript/JavaScript 为主的项目,尤其是那些重视性能和简化工具链的团队。
什么是 Biome?为什么它重要?
Biome 是一个快速、统一的 Web 开发工具链,最初是已停止维护的 Rome 项目的分支。它提供三大核心功能:
- 代码格式化(类似 Prettier)
- 代码检查(类似 ESLint)
- 导入组织(自动对导入语句进行排序和分组)
关键区别在于性能和简洁性。Biome 使用 Rust 编写,支持多线程,处理文件的速度远超基于 JavaScript 的替代工具,同时几乎不需要配置。
性能优势
Biome 的 Rust 基础带来了可衡量的速度提升:
- 格式化速度比 Prettier 快 25 倍
- 代码检查速度比 ESLint 快 15 倍
- 支持大型代码库的多线程处理
- 开发过程中提供近乎即时的反馈
这些性能提升在大型项目中尤为明显,传统工具在开发和 CI/CD 流程中常造成明显的延迟。
Biome 与 ESLint 和 Prettier 的对比
格式化:Biome vs Prettier
Biome 的格式化器输出与 Prettier 大体兼容,保留了团队已经熟悉的格式化模式。主要差异如下:
优势:
- 处理速度大幅提升
- 内置导入组织功能
- 与代码检查共享统一配置
局限:
- 语言支持有限(不支持 HTML、Markdown 或 SCSS)
- 对 Vue、Astro 和 Svelte 仅提供部分支持
- 自定义选项较少
代码检查:Biome vs ESLint
Biome 的代码检查器包含受 ESLint 及其他流行检查器启发的规则,并按逻辑分类:
{
"linter": {
"rules": {
"correctness": {
"noUnusedVariables": "error"
},
"style": {
"useConst": "warn"
},
"security": {
"recommended": true
},
"a11y": {
"recommended": true
}
}
}
}
优势:
- 更快的分析和错误报告
- 清晰、可操作的错误信息
- 内置安全性和无障碍(accessibility)规则
- 区分“安全”与“不安全”的自动修复
局限:
- 规则生态系统比 ESLint 小
- 仅支持 JSON 配置(不支持 JavaScript 配置文件)
- 插件系统有限
快速上手 Biome
安装与设置
将 Biome 作为开发依赖安装:
npm install --save-dev --save-exact @biomejs/biome
--save-exact 标志通过锁定具体版本,确保团队成员行为一致。
在项目中初始化 Biome:
npx biome init
这会创建一个 biome.json 配置文件,包含合理的默认值:
{
"$schema": "https://biomejs.dev/schemas/1.9.2/schema.json",
"formatter": {
"enabled": true,
"indentStyle": "tab",
"lineWidth": 100
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"organizeImports": {
"enabled": true
}
}
基本命令
格式化代码:
npx biome format --write ./src
检查代码:
npx biome lint ./src
同时运行格式化和检查:
npx biome check --write ./src
为你的项目配置 Biome
关键配置选项
大多数项目都会希望自定义以下关键设置:
{
"formatter": {
"indentStyle": "space",
"indentWidth": 2,
"lineWidth": 80
},
"javascript": {
"formatter": {
"quoteStyle": "single",
"trailingComma": "es5",
"semicolons": "always"
}
},
"files": {
"ignore": ["dist/**", "build/**", "*.min.js"]
}
}
从现有工具迁移
Biome 提供迁移命令,可将现有配置转换:
# 从 ESLint 迁移
npx biome migrate eslint --write
# 从 Prettier 迁移
npx biome migrate prettier --write
这些命令会读取你现有的配置文件,并将兼容的设置转换为 Biome 的格式。
IDE 集成与工作流
Visual Studio Code
安装官方 Biome 扩展,并在 settings.json 中配置:
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"editor.codeActionsOnSave": {
"quickfix.biome": "explicit"
}
}
Git Hooks 与 CI/CD
使用 Husky 设置预提交钩子:
{
"scripts": {
"lint:staged": "biome check --staged"
}
}
对于 GitHub Actions,使用官方的 setup action:
name: Code Quality
on: [push, pull_request]
jobs:
biome:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: biomejs/setup-biome@v2
with:
version: latest
- run: biome ci .
语言与框架支持
完全支持
- JavaScript(ES5+)
- TypeScript
- JSX/TSX
- JSON/JSONC
- CSS(基础支持)
部分支持
- Vue(模板语法限制)
- Svelte(组件特定问题)
- Astro(混合内容挑战)
不支持
- HTML
- Markdown
- SCSS/Sass
- YAML
这种有限的语言支持是 Biome 对使用多样化文件类型的团队最大的制约因素。
何时选择 Biome?
理想使用场景
Biome 非常适合:
- 以 TypeScript/JavaScript 为主的项目
- 优先考虑性能的团队
- 没有遗留工具链的新项目
- 文件类型一致的单体仓库(monorepos)
- 寻求简化配置的项目
考虑替代方案的情况
如果你符合以下情况,请继续使用 ESLint/Prettier:
- 大量使用不支持的文件类型
- 依赖特定的 ESLint 插件
- 需要复杂、动态的配置
- 正在处理遗留代码库
实际项目中的性能影响
根据社区基准测试和实际使用情况:
- 小型项目( 10000 个文件):CI/CD 时间大幅节省,开发反馈更快
随着项目规模增大,性能优势愈发显著,使 Biome 对大规模应用尤其具有吸引力。
结论
Biome 通过将代码检查和格式化统一到一个高性能解决方案中,代表了前端工具链的重大进步。其速度优势和简化配置对厌倦管理多个工具的团队极具吸引力。
然而,其有限的语言支持和较小的生态系统意味着它尚不能完全替代 ESLint 和 Prettier。是否采用 Biome 取决于你项目的具体需求和文件类型要求。
对于以 TypeScript/JavaScript 为主的项目,Biome 提供了更简洁、更快速的开发体验。而对于包含多样化文件类型的项目,采用混合策略——对支持的文件使用 Biome,对其他文件使用传统工具——可能是最佳策略。