Biome logo

Biome

Biome 是一个用 Rust 编写的高性能 Web 项目工具链,集代码格式化(Formatter)与静态检查(Linter)于一体,旨在替代 ESLint + Prettier 的碎片化方案,为前端开发提供极速、零配置的代码质量保障。

精选工具代码质量Rust格式化Linter

Biome 是 Rust 编写的高性能前端工具链,集代码格式化与静态检查于一体,旨在替代 ESLint + Prettier 碎片化方案,提供极速零配置的代码质量保障。

Biome

Biome 是一个用 Rust 编写的高性能 Web 项目工具链,集代码格式化(Formatter)与静态检查(Linter)于一体,旨在替代 ESLint + Prettier 的碎片化方案,为前端开发提供极速、零配置的代码质量保障。


技术简介说明

Biome(前身为 Rome)是一个开源的前端工程化工具链,由 TypeScript 创始人 Anders Hejlsberg 早期构想的 Rome 项目演变而来。2023 年项目更名为 Biome,由社区继续维护和发展。

Biome 的核心价值主张是用一个工具、一份配置,替代 ESLint + Prettier + 相关插件的组合。它使用 Rust 从零构建,在保持与 Prettier 约 97% 格式化兼容性的同时,提供了远超传统 JavaScript 工具的 lint 和格式化速度。

Biome 支持 JavaScript、TypeScript、JSX、TSX、JSON、HTML、CSS 和 GraphQL,并能在 VS Code、JetBrains 等主流编辑器中通过 LSP(Language Server Protocol)提供实时诊断。截至 2026 年,Biome 已发展至 v2.5.x 版本,成为前端工具链现代化的重要选择之一。


基本信息

属性
项目名称Biome(biomejs/biome)
当前最新稳定版v2.5.x(2026 年 7 月)
开发语言Rust(核心)+ TypeScript(CLI/编辑器集成)
开源协议MIT + Apache 2.0(双许可)
首次发布2023 年(由 Rome 更名而来)
包管理器npm(@biomejs/biome
官方网站biomejs.dev
GitHubgithub.com/biomejs/biome
npm 下载量月下载量数百万,持续增长
GitHub Stars25,000+
支持语言JavaScript、TypeScript、JSX、TSX、JSON、HTML、CSS、GraphQL
配置文件biome.json(单文件配置)
编辑器支持VS Code、JetBrains(通过 LSP)

快速上手

安装

通过 npm 安装(推荐作为项目依赖):

# 使用 pnpm(项目推荐)
pnpm add -D @biomejs/biome
 
# 使用 npm
npm install --save-dev @biomejs/biome
 
# 使用 yarn
yarn add -D @biomejs/biome

全局安装(用于快速试用):

npm install -g @biomejs/biome

初始化配置

使用内置命令自动生成配置文件:

# 交互式初始化,自动检测项目类型
npx @biomejs/biome init

生成的 biome.json 基础配置:

{
  "$schema": "https://biomejs.dev/schemas/2.5.0/schema.json",
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  }
}

最小使用示例

# 格式化检查(不修改文件,只报告差异)
npx @biomejs/biome format ./src
 
# 格式化并写入文件
npx @biomejs/biome format --write ./src
 
# Lint 检查
npx @biomejs/biome lint ./src
 
# 同时运行格式化和 lint(推荐)
npx @biomejs/biome check ./src
 
# 检查并自动修复
npx @biomejs/biome check --write ./src

package.json 脚本配置

{
  "scripts": {
    "lint": "biome lint ./src",
    "format": "biome format --write ./src",
    "check": "biome check ./src",
    "check:fix": "biome check --write ./src"
  }
}

核心概念与架构

架构设计理念

Biome 的架构灵感来自 rust-analyzer(Rust 语言的增量编译器),采用增量处理和分层管道设计,核心目标是在大规模代码库中保持毫秒级响应。

处理管道(Pipeline)

Biome 的代码处理流程分为以下阶段:

源代码
  │
  ▼
┌──────────┐
│  Scanner │  ← 文件系统扫描,定位配置文件和源文件
└────┬─────┘
     │
     ▼
┌──────────┐
│  Parser  │  ← 解析为 CST(具体语法树),保留所有空白和注释
└────┬─────┘
     │
     ▼
┌──────────┐
│   AST    │  ← 转换为抽象语法树,供分析和转换使用
└────┬─────┘
     │
     ├──► Formatter(格式化输出)
     ├──► Linter(规则检查与诊断)
     └──► Import Organizer(导入排序)

关键组件

1. Scanner(扫描器)

  • 遍历文件系统,收集项目元数据
  • 定位嵌套的配置文件和忽略规则
  • 按会话需要智能聚焦相关目录,跳过无关文件夹以优化性能
  • 支持 Monorepo 场景下的多包索引

2. Parser 与 CST(具体语法树)

  • 基于 rowan 库的内部 Fork,使用 Green/Red Tree 模式
  • CST 记录源代码的每一个细节,包括空格、制表符、注释等"Trivia"信息
  • 弹性可恢复解析:遇到语法错误后能继续解析,使用 Bogus 节点隔离损坏代码
  • 设计上 CST 对外不可见,通过 Red Tree API 暴露结构化数据

3. Formatter(格式化器)

  • 基于 CST 进行格式化,保证格式化前后语义完全一致
  • 与 Prettier 保持约 97% 的输出兼容性
  • 支持单引号/双引号、分号、缩进风格、行宽等配置

4. Linter(检查器)

  • 基于 AST 进行语义级别的规则检查
  • 500+ 条规则,来源于 ESLint、typescript-eslint 等主流插件
  • 规则分为 8 大类别,支持安全修复和不安全修复两种自动修复模式

5. Daemon(守护进程)

  • 采用 Server-Client 架构,Daemon 作为后台长驻服务运行
  • 同时处理来自 CLI 和编辑器的请求
  • 避免每次命令执行时的冷启动开销,显著提升响应速度

核心特性

1. 极速性能

Biome 使用 Rust 原生实现,性能远超基于 JavaScript 的传统工具:

对比场景Biome 优势
vs. ESLint + Prettier 组合10–100× 更快
vs. ESLint 单线程约 4× 更快
vs. ESLint 多线程约 15× 更快
10,000 行 Monorepo Lint约 200ms(ESLint 需 3–5 秒)

2. 统一的格式化和 Lint

一个工具、一次执行,同时完成代码格式化和静态检查:

# 一条命令完成所有检查
biome check ./src
 
# 等价于同时运行 format + lint + organizeImports

3. 零配置启动

biome init 自动检测项目结构(VCS、框架类型等),生成的默认配置开箱即用,无需手动调整即可满足大多数项目需求。

4. 丰富的 Lint 规则集

  • 509 条规则,覆盖 8 大类别:
    • accessibility — 可访问性问题检测
    • complexity — 复杂代码简化建议
    • correctness — 错误和无用代码检测
    • nursery — 实验性新规则(需显式启用)
    • performance — 性能问题检测
    • security — 安全漏洞检测
    • style — 代码风格一致性
    • suspicious — 可疑代码模式检测
  • 规则命名规范:use* 表示建议采用,no* 表示禁止使用

5. 多语言支持

原生支持 8 种语言/格式,无需额外插件:

  • JavaScript / TypeScript / JSX / TSX
  • JSON / JSONC
  • CSS(含 Tailwind v4)
  • HTML
  • GraphQL
  • Vue / Svelte / Astro(v2.3 起实验性支持)

6. Import 自动排序

内置 Import Organizer,自动按规则排序和整理导入语句,无需 eslint-plugin-import 等第三方插件。

7. 安全自动修复

Linter 规则支持两种修复模式:

  • 安全修复(Safe Fix):语义完全等价,可放心自动应用
  • 不安全修复(Unsafe Fix):可能改变行为,需人工确认

8. 插件系统(v2.0 引入)

Biome 2.0 引入插件机制,允许社区扩展规则集,弥补与 ESLint 生态的差距。

9. 多文件分析与类型推断(v2.0 引入)

v2.0 起支持跨文件分析和基础类型推断,使 Linter 能检测更深层的代码问题(如未解析的导入、循环依赖、悬空 Promise 等)。

10. LSP 编辑器集成

通过 Language Server Protocol 提供编辑器级别的实时诊断、自动修复和格式化,支持 VS Code 和 JetBrains 系列。


生态图

┌─────────────────────────────────────────────────────────┐
│                    Biome 工具链生态                        │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌───────────────┐  ┌───────────────┐  ┌────────────┐  │
│  │  Core CLI     │  │  LSP Server   │  │  Daemon    │  │
│  │  biome 命令   │  │  编辑器通信    │  │  后台服务   │  │
│  └───────┬───────┘  └───────┬───────┘  └─────┬──────┘  │
│          │                  │                 │         │
│  ┌───────┴──────────────────┴─────────────────┴──────┐  │
│  │              Biome Rust 核心引擎                    │  │
│  │  ┌──────────┐ ┌──────────┐ ┌──────────────────┐   │  │
│  │  │Formatter │ │ Linter   │ │ Import Organizer │   │  │
│  │  └──────────┘ └──────────┘ └──────────────────┘   │  │
│  └───────────────────────────────────────────────────┘  │
│                                                         │
│  ┌──────────────────── 编辑器集成 ────────────────────┐  │
│  │  VS Code 扩展  │  JetBrains 插件  │  Neovim (LSP) │  │
│  └────────────────────────────────────────────────────┘  │
│                                                         │
│  ┌──────────────────── 构建工具集成 ──────────────────┐  │
│  │  Vite 插件 │ webpack loader │ Turborepo │ Nx     │  │
│  └────────────────────────────────────────────────────┘  │
│                                                         │
│  ┌──────────────────── CI/CD 集成 ───────────────────┐  │
│  │  GitHub Actions │ GitLab CI │ 预提交钩子 (Husky)  │  │
│  └────────────────────────────────────────────────────┘  │
│                                                         │
└─────────────────────────────────────────────────────────┘

相关生态项目

项目说明
@biomejs/biome核心 npm 包
biome-vscodeVS Code 官方扩展
biome-intellijJetBrains 官方插件
eslint-plugin-biome社区桥接插件(过渡期使用)

适用场景

1. 新项目快速搭建

新项目无需在 ESLint、Prettier 及其数十个插件之间反复选择,biome init 一步到位,零配置即可拥有完整的代码质量保障。

2. 追求极致性能的大型项目

当代码库达到数万甚至数十万文件时,ESLint + Prettier 的执行时间可能达到分钟级。Biome 的 Rust 实现能在秒级完成同样的工作,显著提升 CI/CD 流水线效率。

3. Monorepo 多包管理

Biome 2.0 起原生支持 Monorepo,Scanner 能智能索引多包结构,支持包级别的配置继承和差异化规则。

4. 团队标准化代码风格

统一一份 biome.json 覆盖整个团队,避免 ESLint + Prettier 配置冲突问题,减少代码审查中关于风格的争论。

5. 需要 CSS/JSON/GraphQL 统一处理的项目

Biome 原生支持多种文件格式,无需为每种格式单独配置格式化工具(如 stylelintprettier-plugin-*)。

6. 前端框架项目(React/Vue/Svelte/Astro)

v2.3 起支持 Vue、Svelte、Astro 文件的 JS/TS 和 CSS 格式化与检查,适合同构框架项目。

7. 从 ESLint + Prettier 迁移

Biome 提供 biome migrate eslintbiome migrate prettier 命令,自动转换现有配置,降低迁移成本。


开发与工程化

配置文件详解

biome.json 是 Biome 的唯一配置文件,支持 JSON 和 JSONC 格式:

{
  "$schema": "https://biomejs.dev/schemas/2.5.0/schema.json",
  // 文件处理配置
  "files": {
    "ignore": ["dist/**", "node_modules/**"],
    // v2.3 双层排除:! 排除 Scanner 索引,!! 完全排除
    "!": ["generated/**"],
    "!!": ["vendor/**"]
  },
  // 格式化配置
  "formatter": {
    "enabled": true,
    "indentStyle": "space",     // space | tab
    "indentWidth": 2,           // 缩进宽度
    "lineWidth": 100,           // 行宽上限
    "lineEnding": "auto"        // lf | crlf | auto(v2.3 新增)
  },
  // Linter 配置
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      // 按类别精细控制
      "correctness": {
        "noUnusedVariables": "error",
        "noUnresolvedImports": "error"
      },
      "suspicious": {
        "noExplicitAny": "warn"
      },
      "style": {
        "useConst": "error",
        "noNonNullAssertion": "warn"
      },
      "nursery": {
        // 实验性规则需显式启用
        "useSortedClasses": "warn"
      }
    }
  },
  // Import 排序
  "organizeImports": {
    "enabled": true
  },
  // JavaScript 特定配置
  "javascript": {
    "formatter": {
      "quoteStyle": "single",
      "semicolons": "asNeeded",
      "trailingCommas": "all"
    }
  }
}

与 CI/CD 集成

# GitHub Actions 示例
name: Biome Check
on: [push, pull_request]
jobs:
  biome:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: oven-sh/setup-bun@v1
      - run: bun install
      - name: Run Biome check
        run: npx @biomejs/biome ci ./src

biome ci 命令专为 CI 环境设计,以非零退出码报告所有格式化和 lint 问题。

与 Husky 预提交钩子集成

// package.json
{
  "scripts": {
    "prepare": "husky"
  },
  "lint-staged": {
    "*.{js,ts,jsx,tsx,json,css}": [
      "biome check --write --no-errors-on-unmatched"
    ]
  }
}

与 Turborepo 集成

// turbo.json
{
  "tasks": {
    "lint": {
      "inputs": ["src/**/*.{ts,tsx,js,jsx}"],
      "outputs": []
    },
    "format:check": {
      "inputs": ["src/**/*.{ts,tsx,js,jsx,json,css}"],
      "outputs": []
    }
  }
}

配置继承与覆盖

Monorepo 中可在子包放置独立的 biome.json,Biome 自动合并根配置与子配置:

monorepo/
├── biome.json          # 根配置(全局规则)
├── packages/
│   ├── web/
│   │   └── biome.json  # 子包配置(覆盖特定规则)
│   └── api/
│       └── biome.json

性能与安全

性能数据

指标数据
格式化速度(vs Prettier)约 10–30× 更快
Lint 速度(vs ESLint)约 4–15× 更快(单线程到多线程)
冷启动时间< 50ms(Rust 原生二进制)
Daemon 模式下响应< 10ms(热路径)
内存占用相比 Node.js 工具显著降低

性能优化机制

  1. Daemon 常驻进程:避免每次命令的冷启动,编辑器与 CLI 共享同一实例
  2. 并行处理:Rust 原生多线程,自动利用所有 CPU 核心
  3. 增量扫描:Scanner 只处理变更文件,跳过未修改目录
  4. 零依赖解析开销:不需要加载 JavaScript 运行时

安全性

  • 格式化保证语义等价:格式化前后代码行为完全一致
  • Lint 规则区分安全修复不安全修复,避免自动修复引入 bug
  • 内置 security 类别规则,检测常见安全模式(如硬编码密钥、不安全的正则表达式等)
  • Rust 的内存安全保证消除了传统 JavaScript 工具的内存泄漏风险

技术对比

Biome vs ESLint + Prettier

维度BiomeESLint + Prettier
实现语言RustJavaScript/TypeScript
工具数量1 个(统一工具链)2+ 个(ESLint + Prettier + 插件)
配置文件1 个(biome.json4+ 个(.eslintrc.prettierrc.eslintignore 等)
执行速度⚡ 极快(Rust 原生)🐢 较慢(Node.js 运行时)
规则数量509 条内置ESLint 100+ 核心 + 数千社区插件
Prettier 兼容性~97%100%(原生)
插件生态发展中(v2.0 起支持插件)极其成熟(eslint-plugin-*)
框架特定支持内置 React/Solid 规则,Vue/Svelte 实验性通过 eslint-plugin-reacteslint-plugin-vue 等深度支持
多语言支持JS/TS/JSON/CSS/HTML/GraphQL需额外插件(stylelint 等)
配置复杂度低(零配置可用)高(需手动协调 ESLint 和 Prettier)
社区成熟度快速增长(25k+ stars)行业标准(23k+ stars,多年积累)
类型感知 Lintv2.0 起支持基础类型推断通过 @typescript-eslint/parser 深度支持

Biome vs Oxlint / Oxfmt

维度BiomeOxlint / Oxfmt
定位统一工具链(Formatter + Linter)独立的 Linter 和 Formatter
Linter 速度极快号称更快(专为超大规模优化)
Formatter 成熟度成熟(97% Prettier 兼容)Oxfmt 仍处于 Alpha(2025 年底发布)
规则数量509 条900+ 条(含大量 ES/TS 规则)
生态完善度较完善(编辑器、CI、插件)早期阶段

选型建议

场景推荐
新项目,追求简洁高效Biome
需要 ESLint 特定插件(如 react-hooks、testing-library)ESLint(或 Biome + ESLint 混合)
超大型 Monorepo(10 万+ 文件)BiomeOxlint
需要极致自定义规则ESLint(插件生态更丰富)
团队已有成熟 ESLint 配置,迁移成本高保持 ESLint,逐步试点 Biome

最佳实践

1. 从 ESLint + Prettier 平滑迁移

# 自动迁移 ESLint 配置
npx @biomejs/biome migrate eslint --write
 
# 自动迁移 Prettier 配置
npx @biomejs/biome migrate prettier --write

迁移后保留 ESLint 作为对照运行一段时间,确认规则覆盖完整后再完全切换。

2. 渐进式启用规则

不要一次性开启所有规则,避免产生大量告警。推荐分阶段启用:

{
  "linter": {
    "rules": {
      "recommended": true,    // 先开启推荐规则
      // 逐步增加特定规则
      "correctness": {
        "noUnusedVariables": "error"
      },
      "nursery": {
        // 实验性规则先在 nursery 中观察
        "useSortedClasses": "warn"
      }
    }
  }
}

3. 区分安全修复与不安全修复

# 只应用安全修复(CI 中推荐)
biome check --write --linter-safe-fixes ./src
 
# 包含不安全修复(开发者本地使用)
biome check --write ./src

4. 结合 pre-commit 钩子

在 Git 提交前自动运行 Biome,确保每次提交都符合规范:

# 安装 lint-staged + husky
pnpm add -D lint-staged husky
 
# 配置 lint-staged
# package.json 中添加:
# "lint-staged": {
#   "*.{js,ts,jsx,tsx,json,css}": ["biome check --write"]
# }

5. Monorepo 分层配置

根目录放置通用规则,子包按需覆盖:

// 根目录 biome.json — 通用规则
{
  "formatter": { "indentWidth": 2 },
  "linter": { "rules": { "recommended": true } }
}
 
// packages/api/biome.json — API 包特定规则
{
  "extends": ["../../biome.json"],
  "linter": {
    "rules": {
      "suspicious": { "noExplicitAny": "error" }
    }
  }
}

6. 利用 Domain 规则集

Biome 支持按框架领域启用规则,避免在不相关文件中触发:

{
  "linter": {
    "domains": {
      "react": {
        "enabled": true
        // React 特定规则只在 .jsx/.tsx 中生效
      }
    }
  }
}

技术局限与边界

1. 插件生态仍在发展

ESLint 拥有数千个社区插件(如 eslint-plugin-react-hookseslint-plugin-testing-libraryeslint-plugin-import 等),Biome 的插件系统虽然从 v2.0 起已可用,但社区插件数量和质量仍有差距。对于深度依赖特定 ESLint 插件的项目,可能需要混合使用。

2. Prettier 兼容性非 100%

Biome 格式化与 Prettier 有约 97% 的兼容性,在极少数边界情况下输出不一致。如果团队对特定格式有严格要求且依赖 Prettier 的精确行为,需注意差异。详细差异参见官方文档 Differences with Prettier

3. 类型感知能力有限

相比 @typescript-eslint/parser 的深度类型感知分析(借助 TypeScript Compiler API),Biome 的类型推断仍较为基础。涉及复杂泛型推断、条件类型等高级 TypeScript 特性时,Biome 的规则覆盖可能不完整。

4. Vue/Svelte/Astro 支持仍为实验性

v2.3 引入的 Vue、Svelte、Astro 文件格式化和检查功能标记为实验性,可能存在边界情况下的解析或格式化问题,生产环境使用需谨慎验证。

5. 社区和文档成熟度

相比 ESLint 多年的积累,Biome 的社区规模、教程数量、StackOverflow 问答覆盖仍有差距。遇到问题时可能需要直接查阅源码或 GitHub Issues。

6. 不支持自定义 JavaScript 插件(完整自定义)

Biome 的插件系统不同于 ESLint 的完全自由 JavaScript 插件 API,自定义规则的灵活性和调试便利性仍有提升空间。


学习资源

官方资源

文章与教程

资源链接
Biome vs ESLint + Prettier: 2025 Linting RevolutionMedium
The ESLint and Prettier Killer? Migration Guide for 2026Dev.to
Migrating from Prettier and ESLint to BiomeJSAppSignal Blog
Biome vs ESLint vs Oxlint 2026PkgPulse
Why I Ditched ESLint + Prettier for BiomeSergio Florez
ESLint vs Biome: JavaScript Linting Comparison 2026Reintech

视频资源

资源链接
Biome: Faster, Smarter JS Formatting & Linting in Rust!YouTube
I Will Never Use Prettier or ESLint AgainYouTube
Prettier/ESLint to Biome: The Lightning-Fast Rust-Based ToolYouTube

社区

平台链接
GitHub Discussionsgithub.com/biomejs/biome/discussions
Discord 社区discord.gg/BypxDwKz
Reddit 讨论r/nextjs - Biome 讨论帖

2026 年现状

版本进展

截至 2026 年 7 月,Biome 已发展至 v2.5.x,关键里程碑回顾:

版本时间重要特性
v1.x2023–2024基础格式化和 Lint,快速积累用户
v2.0(Biotype)2025 年 3 月多文件分析、类型推断、插件系统、Monorepo 支持
v2.32025 年 10 月Vue/Svelte/Astro 实验性支持、Tailwind v4、双层排除系统
v2.5.x2026 年 7 月509+ Lint 规则、持续稳定性改进

行业地位

  • ESLint + Prettier 替代方案的首选:在"统一工具链"赛道中,Biome 是最成熟、用户最多的选择
  • 新项目的默认推荐:越来越多的脚手架和模板(如 create-next-app 社区模板)默认采用 Biome
  • 竞争格局形成:Oxlint/Oxfmt 作为新兴竞争者出现,但 Biome 在工具链完整度上仍领先
  • 生态持续扩展:插件系统逐步成熟,社区贡献的规则数量稳步增长

发展趋势

  1. 插件生态完善:预计更多社区插件将填补与 ESLint 生态的差距
  2. 框架支持深化:Vue、Svelte、Astro 支持将从实验性转为稳定
  3. 类型感知增强:更深层次的 TypeScript 类型推断能力将持续改进
  4. AI 辅助代码分析:团队已在路线图中探索 AI 辅助的规则建议
  5. 行业标准采纳:随着性能优势被广泛认知,更多企业级项目将采用 Biome 作为标准工具

总结

Biome 代表了前端工具链从 JavaScript 向 Rust 迁移的大趋势。它不是 ESLint 或 Prettier 的简单克隆,而是从底层重新设计的下一代工具。对于 2026 年的前端开发者而言,Biome 已经是一个生产可用、性能卓越、持续演进的选择——尤其适合追求工程效率和新项目启动的团队。