Biome
以 Rust 构建的 Web 工具链,在一个快速的命令行与编辑器服务中提供格式化、Lint、导入整理和代码修复。
项目概述
Biome 面向 JavaScript、TypeScript、JSX、TSX、JSON、CSS、GraphQL 等 Web 语言,尝试用统一配置和诊断体验替代常见的 ESLint、Prettier 与导入整理组合。
Biome 是采用 Rust 编写的开源 Web 工具链,源自 Rome 社区的后续工作。它把 Formatter、Linter、Assist、解析器、诊断输出和 Language Server 集成在同一个工具中,可通过一份 biome.json 配置命令行、编辑器与 CI。Biome 可以零配置运行,也提供从 ESLint 和 Prettier 迁移的命令。当前对 JavaScript、TypeScript、JSX、TSX、JSON、CSS、GraphQL 等语言提供稳定能力;Vue、Svelte 与 Astro 已可开箱处理,但官方仍将其标为实验性支持,迁移前应使用真实代码验证。
主要特点
Biome 用共享的解析与诊断基础设施覆盖代码格式、静态检查、批量修复和编辑器反馈。
统一 Formatter
同一个二进制可格式化 JavaScript、TypeScript、JSX、TSX、JSON、CSS、GraphQL 等文件,并在多数 JavaScript 场景中保持较高的 Prettier 兼容度。
内置 Linter
规则覆盖正确性、可疑代码、性能、安全、可访问性与代码风格,并区分 Info、Warning、Error 和可修复诊断。
安全与非安全修复
`--write` 默认应用安全修复,只有显式加入 `--unsafe` 才会执行可能改变语义的重写,便于团队控制自动修改边界。
Biome Assist
Assist 提供整理 Imports、排序对象 Key 等 Source Actions,可在命令行或支持 LSP Code Action 的编辑器中运行。
单一配置文件
biome.json 或 biome.jsonc 可以统一文件范围、Formatter、Linter、Assist、语言选项、Overrides 和插件配置。
增量编辑器体验
官方 VS Code、IntelliJ 与 Zed 扩展可在保存时格式化、显示诊断并应用修复,避免编辑器与命令行使用不同规则。
统一 Check 命令
`biome check` 一次执行格式检查、Lint 和 Assist,`biome ci` 则为持续集成提供不会修改文件的检查模式。
迁移工具
专用命令可以读取 ESLint 与 Prettier 配置并生成尽可能接近的 Biome 配置,降低现有项目的试用门槛。
Monorepo 配置
Root 配置、Overrides、Includes 与嵌套配置可以按包或文件类型调整规则,适合多应用和共享包仓库。
GritQL Linter 插件
插件可以匹配项目特定代码模式、报告自定义诊断并建议重写,但能力和生态仍与 ESLint 插件模型不同。
独立可执行文件
除包管理器安装外也可使用不依赖 Node.js 的 Standalone Binary,适合非 Node 仓库或精简 CI 环境。
一致的诊断输出
Parser、Formatter 与 Linter 共用带源码框、位置和修复提示的诊断系统,本地、编辑器和 CI 更容易对齐。
适用场景
当团队希望减少工具数量、统一本地与 CI 行为,或改善大型前端仓库的检查速度时,Biome 值得评估。
TypeScript Web 应用
React、Node.js、Vite 等项目可用一套配置完成 TSX 格式化、代码检查、Imports 整理和 CI Gate。
大型 Monorepo
统一二进制与配置有助于减少多个工具扫描相同文件的开销,并通过 Includes、Overrides 控制不同包的规则。
新项目工程规范
零配置即可开始,再逐步固定缩进、引号、推荐规则和文件范围,适合快速建立一致的代码质量基线。
ESLint + Prettier 迁移
希望减少依赖、配置冲突和执行步骤的团队,可以先迁移兼容规则,再保留少量 Biome 尚未覆盖的专用检查。
CI 与提交前检查
`biome ci`、`biome check --staged` 或 `--changed` 可用于 Pull Request、Pre-commit 和增量检查流程。
编辑器统一
跨 VS Code、JetBrains 和 Zed 的团队可以共享 biome.json,让保存时格式化和 CI 结果保持一致。
多语言 Web 资源
同一工具可处理 JS/TS、JSON、CSS、GraphQL 等常见文件,减少为每种资源维护独立格式器的需要。
优点与注意事项
技术选型不仅要看能力,也要理解它带来的团队成本。
主要优点
Biome 擅长的地方
- Formatter、Linter、Assist 和 Language Server 共享同一工具与配置
- Rust 实现和原生二进制适合高频编辑器反馈与大型仓库检查
- 安装依赖少,减少 ESLint、Prettier 与导入插件之间的配置协调
- 默认推荐规则即可提供可用基线,也能通过 Overrides 精细调整
- 安全修复与 Unsafe Fix 明确分开,便于在 CI 中控制风险
- 提供 ESLint 和 Prettier 迁移命令,方便渐进式试用
- 官方编辑器扩展让保存时格式化、诊断和 Code Action 保持一致
- 双许可证和独立可执行文件便于不同工程环境采用
需要注意
采用前应考虑的问题
依赖框架、测试、GraphQL 或企业自定义 ESLint 插件的项目,迁移后可能缺少等价规则,需要保留部分 ESLint 或重新设计检查。
JavaScript、TypeScript、JSON、CSS 等支持较完整,但 Markdown、YAML、SCSS 等仍处于开发或未提供 Lint,不能默认替代所有 Formatter。
这些文件已能解析、格式化和 Lint,但框架专属语法与跨嵌入语言规则仍有限,官方也提醒可能出现误报或格式差异。
Biome 有少量有意差异,也尚未覆盖 Prettier 的全部语言和插件。迁移会产生较大格式 Diff 时,应单独提交并锁定版本。
Biome v2 的 Includes、Overrides、Assist 与插件结构不同于 ESLint Flat Config,机械翻译容易造成文件遗漏或规则重复。
并非所有检查都会像 TypeScript ESLint 的类型化规则那样读取完整 Type Information;关键类型约束仍应由 `tsc --noEmit` 负责。
`--write --unsafe` 可能改变代码语义,不适合未经审阅地在整个仓库或自动提交流程中执行。
GritQL 插件适合模式匹配和重写,但与 ESLint 的 JavaScript 插件 API、成熟生态和框架规则覆盖并不等价。
Formatter 输出和规则可能随版本演进。官方安装示例使用精确版本,团队应让本地、编辑器和 CI 读取同一版本。
npm 包会按平台安装对应可选二进制;特殊 CPU、旧系统、极简容器或禁用 Optional Dependencies 的环境应先验证。
Biome 能解析和检查 TypeScript,但它不是 TypeScript Compiler,不能替代项目构建或完整的 `tsc` 类型检查。
快速开始
下面从精确安装版本开始,创建配置、添加脚本与编辑器设置,再接入 CI 和现有 ESLint / Prettier 项目。
bashnpm install --save-dev --save-exact @biomejs/biome
npx @biomejs/biome initjson{
"$schema": "https://biomejs.dev/schemas/2.5.6/schema.json",
"files": {
"includes": ["**", "!**/dist", "!**/coverage"]
},
"formatter": {
"enabled": true,
"indentStyle": "space"
},
"linter": {
"enabled": true,
"rules": {
"recommended": true
}
},
"assist": {
"enabled": true,
"actions": {
"source": {
"organizeImports": "on"
}
}
},
"javascript": {
"formatter": {
"quoteStyle": "double"
}
}
}json{
"scripts": {
"format": "biome format --write .",
"lint": "biome lint .",
"check": "biome check .",
"check:fix": "biome check --write .",
"typecheck": "tsc --noEmit"
}
}json{
"editor.defaultFormatter": "biomejs.biome",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.fixAll.biome": "explicit",
"source.organizeImports.biome": "explicit"
}
}bashnpx @biomejs/biome migrate eslint --write
npx @biomejs/biome migrate prettier --write
# 先只检查,不立即修改整个仓库
npx @biomejs/biome check .yamlname: Code quality
on:
pull_request:
push:
branches: [main]
jobs:
biome:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: biomejs/setup-biome@v2
with:
version: 2.5.6
- run: biome ci .bash# 应用安全的格式与代码修复
npx @biomejs/biome check --write .
# 审阅后再决定是否运行非安全修复
npx @biomejs/biome check --write --unsafe .
# Biome 不替代 TypeScript Compiler
npm run typecheck下一步:先在一个包或一类文件中试运行 `biome check`,审阅格式 Diff 和 Unsafe Fix,再逐步替换现有工具。安装时使用精确版本,保证成员电脑与 CI 输出一致。
类似项目
TypeScript 与 Vite 是常见的配套开发基础;ESLint、Prettier 和 oxlint 则分别代表可扩展 Lint、专用格式化及高速 Lint 的不同方案。
TypeScript
为 JavaScript 添加类型语法,提升大型项目的开发体验。
查看项目Vite
新一代前端构建工具,提供快速开发服务器和优化构建。
查看项目ESLint
高度可配置、可扩展的 JavaScript Linter,通过规则、插件、Parser 与 Processor 发现问题并统一代码质量规范。
查看项目Prettier
广泛采用的 Opinionated Formatter,通过插件覆盖多种编程语言、模板和文档格式。
访问官网oxlint
由 Oxc 提供的高速 JavaScript 与 TypeScript Linter,专注静态检查并兼容越来越多 ESLint 规则。
访问官网Biome vs ESLint + Prettier
Biome 希望以一个高性能工具统一 Formatter、Linter 和代码操作;ESLint + Prettier 则把可扩展静态检查与多语言格式化交给两个成熟工具。两者都能建立可靠规范,但覆盖范围、插件生态和迁移成本明显不同。
| 比较维度 | Biome | ESLint + Prettier |
|---|---|---|
| 工具组成 | 单一二进制、配置、诊断和 Language Server | ESLint、Prettier 及其配置与集成插件 |
| 核心实现 | Rust 原生工具链 | 主要基于 JavaScript / Node.js |
| 格式化 | 内置 Formatter,高度兼容但不完全等同 Prettier | Prettier 语言与插件覆盖更广 |
| Lint | 内置规则、统一解析器和安全修复 | ESLint 规则与配置能力成熟、扩展范围广 |
| 插件生态 | GritQL 插件较新,能力边界更明确 | 大量框架、测试、导入和企业自定义插件 |
| 类型检查 | 不能替代 tsc,类型感知规则范围有限 | typescript-eslint 可提供更多类型化规则,同样不能替代构建 |
| 语言覆盖 | 聚焦 Web 语言,部分框架和语言仍实验或开发中 | Prettier 插件覆盖 Markdown、YAML、模板等更多格式 |
| 配置复杂度 | 一份 biome.json,默认即可使用 | 更灵活,但需协调 Flat Config、插件与 Prettier |
| 迁移成本 | 提供迁移命令,但可能缺少专用规则或产生格式 Diff | 现有项目通常已有配置与团队经验 |
| 更适合 | 重视速度、统一体验和较少依赖的 Web 项目 | 依赖丰富插件、广泛语言或高度定制规则的团队 |
新建的 JavaScript / TypeScript 项目如果主要使用 Biome 已稳定支持的语言,并希望用更少配置获得快速反馈,可以优先试用 Biome;已有项目若依赖大量 ESLint 插件、Prettier 语言插件或严格的现有格式输出,不必一次性全量替换,可先让 Biome 负责一部分文件或能力。无论采用哪种组合,都应继续运行 TypeScript 编译检查与测试。
资料核验
版本、维护信息与本页采用的官方资料来源。
本页依据 Biome 官方 Getting Started、语言支持、Linter、Assist、编辑器集成、迁移与 Formatter 差异文档,以及 npm Registry 和官方源码仓库整理。实验性语言能力可能快速变化,采用前应以当前官方文档和真实项目测试为准。
官方仓库未归档,核验时最近可见的代码活动日期为 2026 年 7 月 29 日。该状态表示项目近期仍有公开维护活动,不代表固定发布频率或长期支持承诺。