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.
Nghe bài viết này dưới dạng podcastTó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.
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
}
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.
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:
- 100x nhanh hơn ESLint và Prettier — không cần tranh luận nữa
- 1 file config thay thế 5 files rối rắm
- Zero dependencies — không còn version conflict nightmare
- Auto-migration tool — chuyển đổi trong 30 phút
- 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!
Chưa có bình luận
Để lại bình luận
Bình luận sẽ được phê duyệt trước khi hiển thị.