再見 Rome,你好 Biome:一體化前端工具鏈的新選擇

4 分鐘

1. 前端開發的「工具疲勞」

在現代前端開發中,一個專案通常需要一套複雜的工具組合才能順利執行:

  • Linter:ESLint 用於檢查 JavaScript/TypeScript 程式碼品質。
  • Formatter:Prettier 用於統一程式碼風格。
  • Compiler:Babel 或 TypeScript(tsc)用於程式碼轉換。
  • Bundler:Webpack、Rollup 或 Vite 用於打包。

管理這些工具的設定、外掛、版本和彼此間的互動,本身就是一項不小的工作,這便是所謂的「工具疲勞」。多年來,社群一直在探索「一體化工具鏈」的可能性,希望能用一個工具解決所有問題。

2. Rome 的願景與 Biome 的誕生

Rome 是由 Facebook 前員工、Babel 作者 Sebastian McKenzie 發起的雄心勃勃專案,旨在用 TypeScript 重寫整個前端工具鏈。它的願景是提供一個零設定、高效能的統一工具。然而,在經歷多年開發和商業化嘗試後,Rome Labs 公司於 2023 年宣布停止營運。

幸運的是,Rome 的核心程式碼是開源的。社群迅速行動起來,建立了一個名為 Biome 的分支,並由專門的社群組織維護,旨在繼承並實現 Rome 最初的願景。

3. Biome 是什麼?

Biome 是一個用 Rust 重寫的高效能前端工具鏈。它旨在提供統一、極速的開發體驗,以取代 ESLint、Prettier 等一系列獨立工具。

截至 2023 年底,Biome 的核心功能主要集中在 LinterFormatter 上,並在這兩方面展現出驚人的實力。

主要優勢:

  • 極致效能:得益於 Rust 語言,Biome 的執行速度遠超用 JavaScript 編寫的 ESLint 和 Prettier。對於大型程式碼庫,其效能提升可達一個數量級。
  • 統一設定:只需一個 biome.json 檔案,即可管理所有工具的行為,告別散落各處的 .eslintrc.prettierrc.editorconfig
  • 詳盡的診斷資訊:Biome 的 Linter 不只能指出錯誤,還能提供非常詳盡的上下文和修正建議,協助開發者理解問題根源。
  • 與 Prettier 相容:Biome 的格式化工具旨在與 Prettier 95% 以上的規則相容,使得從 Prettier 遷移的成本非常低。

4. 快速上手

你可以透過 npx 快速在專案裡嘗試 Biome:

# 检查当前项目中的代码问题
npx @biomejs/biome check ./src

# 自动修复可修复的 lint 问题
npx @biomejs/biome check --apply ./src

# 格式化代码
npx @biomejs/biome format --write ./src

建立一個 biome.json 檔案可以讓你自訂規則和設定:

{
  "$schema": "https://biomejs.dev/schemas/1.4.1/schema.json",
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true
    }
  }
}

5. 未來展望

Biome 的發展藍圖非常清晰:在穩定 Linter 和 Formatter 的基礎上,逐步實現 Compiler、Bundler、Test Runner 等功能,最終成為一個名副其實的「一體化」工具鏈。

雖然它還很年輕,但 Biome 憑藉出色的效能、社群驅動的開放模式,以及對開發者體驗的專注,已經成為前端工具領域一股不容忽視的新生力量。對於尋求簡化工具堆疊、提升開發效率的團隊而言,Biome 提供了一個非常有吸引力的未來選項。