Rust 实现的 Web 项目一体化工具链,同时提供 linter 和 formatter,目标是用单一工具替代 ESLint + Prettier 组合,零依赖,25.4k stars。

核心特性

  • linter + formatter 一体化:一个 CLI 同时做代码检查和格式化,不用再维护两套配置和两条 CI 流水线
  • 速度:比 ESLint + Prettier 组合快 20-100 倍
  • 格式化兼容性:与 Prettier 输出约 97% 一致,迁移成本低
  • 规则数:455+ linter 规则,覆盖 ESLint 核心规则 + 常见插件(部分 ESLint 特有的 strict/stylistic 规则未完全覆盖)
  • 支持语言:JavaScript、TypeScript、JSX、TSX、JSON、CSS
  • 规则命名约定:use* 前缀表示”建议/强制使用某写法”,no* 前缀表示”禁止某写法”

安装与使用

npm install -D @biomejs/biome
npx biome init             # 生成 biome.json 配置
npx biome check .          # 同时跑 lint + format 检查
npx biome check . --write  # 检查并自动修复/格式化
npx biome lint .           # 只跑 linter
npx biome format . --write # 只跑格式化

从 ESLint + Prettier 迁移

npx biome migrate eslint    # 转换现有 .eslintrc 配置
npx biome migrate prettier  # 转换现有 Prettier 配置

迁移后两个来源的配置会合并进统一的 biome.json。

配置示例

{
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "suspicious": {
        "noExplicitAny": "error"
      }
    }
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space"
  }
}

工具边界

  • 规则数量(455+)少于 ESLint 全量生态(含所有第三方插件后规模远超此数),部分小众插件规则没有 Biome 等价物
  • 与 ESLint 共存迁移场景下,可用 eslint-config-biome 关闭 ESLint 中已被 Biome 覆盖的重复规则,避免双重报错
  • 定位偏”一体化工具链”,如果项目已经深度依赖某个 ESLint 专项插件(如复杂的自定义规则集),迁移前需要先做规则覆盖度盘点

相关

  • eslint — Biome 的规则体系参照对象,可用 eslint-config-biome 共存
  • oxlint — 同为 Rust 实现的竞品,Oxlint 更专注纯 linting 速度,Biome 更强调 lint+format 一体化
  • vite