Biome: Một Tool Thay Thế ESLint và Prettier, Nhanh Hơn 100 Lần

Biome thay thế hoàn toàn ESLint + Prettier trong một tool duy nhất, viết bằng Rust, nhanh hơn 100x và không cần cài bất kỳ dependency nào.

5 phút đọc
Tập này đang được chuẩn bị, quay lại sau nhé.

Tóm tắt nhanh

Biome là toolchain linting + formatting được viết bằng Rust, thay thế hoàn toàn ESLint và Prettier. Nhanh hơn ESLint 100x, không cần node_modules cho tooling, và hỗ trợ JavaScript, TypeScript, JSX, JSON, CSS, GraphQL trong một config file duy nhất.

Biome Toolchain — ESLint + Prettier = 1 Tool

Giới thiệu

Nếu bạn đã từng setup một project JavaScript mới từ đầu, bạn biết cảm giác này: cài ESLint, cài Prettier, cài eslint-config-prettier để chúng không conflict, cài plugins cho TypeScript, React, Import order... 30 phút sau bạn có node_modules nặng 200MB chỉ cho tooling và một .eslintrc.json dài 100 dòng mà bạn không hiểu hết.

Biome ra đời để giải quyết đúng vấn đề này. Được fork từ Rome Tools (dự án của team Facebook) và rewrite hoàn toàn bằng Rust, Biome trong năm 2026 đã trở thành lựa chọn số một cho các dự án JavaScript/TypeScript mới.

Biome là gì — Khái niệm cốt lõi

Biome là unified toolchain gồm:

  • Linter: Thay thế ESLint + hầu hết plugins phổ biến
  • Formatter: Thay thế Prettier
  • Import organizer: Sắp xếp imports tự động
  • CI integration: First-class support cho GitHub Actions, GitLab CI

Tất cả được đóng gói trong một binary ~7MB, không cần cài node_modules.

Cài đặt và Setup

# Cài Biome
npm install --save-dev --save-exact @biomejs/biome
# hoặc dùng Bun
bun add --dev @biomejs/biome

# Khởi tạo config
npx @biomejs/biome init

File biome.json được tạo ra:

{
  "$schema": "https://biomejs.dev/schemas/1.9.0/schema.json",
  "organizeImports": {
    "enabled": true
  },
  "linter": {
    "enabled": true,
    "rules": {
      "recommended": true,
      "correctness": {
        "noUnusedVariables": "error"
      },
      "suspicious": {
        "noExplicitAny": "warn"
      }
    }
  },
  "formatter": {
    "enabled": true,
    "indentStyle": "space",
    "indentWidth": 2,
    "lineWidth": 100
  },
  "javascript": {
    "formatter": {
      "quoteStyle": "double",
      "trailingCommas": "all"
    }
  }
}

Đây là toàn bộ config bạn cần — thay thế .eslintrc.json, .prettierrc, .prettierignore và nhiều files khác.

Tính năng nổi bật

1. Hiệu suất 100x — Con số Thực

# Benchmark trên codebase 2000 files TypeScript
# ESLint:
time npx eslint src/
# real: 45.2s

# Biome:
time biome lint src/
# real: 0.4s
# → 113x nhanh hơn

# Prettier:
time npx prettier --check src/
# real: 28.7s

# Biome format:
time biome format --check src/
# real: 0.3s
# → 95x nhanh hơn

Trên CI với 2000 file TypeScript, bạn tiết kiệm ~73 giây mỗi lần run. Với 20 commits/ngày, đó là 24 phút CI time tiết kiệm được mỗi ngày.

2. Zero Dependencies

# Setup ESLint + Prettier truyền thống:
npm install eslint prettier \
  eslint-config-prettier \
  eslint-plugin-react \
  eslint-plugin-react-hooks \
  @typescript-eslint/parser \
  @typescript-eslint/eslint-plugin \
  eslint-plugin-import
# → 8 packages, ~45MB, nhiều potential conflicts

# Setup Biome:
npm install --save-dev @biomejs/biome
# → 1 package, ~7MB, zero conflicts

3. Editor Integration

Biome có extension cho VS Code, IntelliJ, Neovim với format-on-save:

// .vscode/settings.json
{
  "editor.defaultFormatter": "biomejs.biome",
  "editor.formatOnSave": true,
  "editor.codeActionsOnSave": {
    "source.organizeImports.biome": "explicit",
    "quickfix.biome": "explicit"
  }
}

4. Lint Rules Phong Phú

Biome cung cấp hơn 200 lint rules, bao gồm:

// Biome phát hiện và auto-fix:

// ❌ Unnecessary else
if (condition) {
  return a;
} else {
  return b;  // else không cần thiết
}
// ✅ Auto-fixed to:
if (condition) {
  return a;
}
return b;

// ❌ Prefer const
let x = 5;  // x không bị reassign
// ✅ Auto-fixed:
const x = 5;

// ❌ No floating promises
async function fetchData() {
  fetch("/api/data");  // Promise không được await hoặc handle
}

100x Faster Lint — Rust-powered Performance

Tích hợp vào CI/CD

# .github/workflows/quality.yml
name: Code Quality
on: [push, pull_request]

jobs:
  biome:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Biome
        uses: biomejs/setup-biome@v2
        with:
          version: latest
      - name: Run Biome
        run: biome ci --reporter=github .

Toàn bộ quality check trong ~1 giây cho project vừa.

So sánh Biome vs ESLint + Prettier

Tiêu chí ESLint + Prettier Biome
Tốc độ Chậm (JS) 100x nhanh hơn (Rust)
Dependencies 8+ packages 1 package
Config files 3-5 files 1 file
Conflict issues Thường xuyên Không có
Ecosystem Rất lớn Đủ dùng (200+ rules)
Plugin support Phong phú Hạn chế hơn
Migration effort N/A ~1-2 giờ

Migrate từ ESLint + Prettier

# Biome có migration tool tự động
npx @biomejs/biome migrate eslint --write
npx @biomejs/biome migrate prettier --write

# Xóa dependencies cũ
npm uninstall eslint prettier eslint-config-prettier ...

# Update package.json scripts
# "lint": "biome lint ."
# "format": "biome format --write ."
# "check": "biome check ."

Trong thực tế, migration thường mất 30-60 phút cho project trung bình.

Zero Dependencies — Unified Config

Khi nào NÊN và KHÔNG NÊN dùng Biome

Nên dùng Biome:

  • Projects mới (không cần migrate)
  • Teams muốn đơn giản hóa tooling setup
  • Monorepos với nhiều packages
  • CI/CD với requirements tốc độ cao

Cân nhắc thêm ESLint nếu:

  • Cần ESLint plugins đặc thù (ví dụ: eslint-plugin-testing-library)
  • Project đang dùng rules ESLint rất custom phức tạp
  • Team đã quen thuộc với ESLint config và không muốn thay đổi

Xu hướng & Tương lai

Biome đang là một trong những open-source projects tăng trưởng nhanh nhất trong JavaScript ecosystem năm 2026, với hơn 40K GitHub stars. Roadmap bao gồm:

  • GraphQL linting: Đang trong beta
  • CSS formatter improvements: Hoàn thiện hơn
  • Plugin system: Cho phép viết custom rules bằng Rust hoặc WebAssembly
  • Biome 2.0: Dự kiến cuối 2026 với API mới

Kết luận

5 lý do chuyển sang Biome ngay:

  1. 100x nhanh hơn ESLint và Prettier — không cần tranh luận nữa
  2. 1 file config thay thế 5 files rối rắm
  3. Zero dependencies — không còn version conflict nightmare
  4. Auto-migration tool — chuyển đổi trong 30 phút
  5. Format + Lint + Import sort — tất cả trong một lệnh biome check

Nếu bạn đang start project mới, đừng cài ESLint hay Prettier — cài Biome. Nếu bạn có project cũ, dành 1 buổi chiều để migrate — đây là khoản đầu tư thời gian xứng đáng.


Bạn đang dùng công nghệ nào trong bài? Chia sẻ kinh nghiệm trong phần bình luận!