Biome vs ESLint: Linter mới nhanh gấp 100x có đáng chuyển?
So sánh chi tiết Biome và ESLint — performance, ecosystem, migration path, và khi nào nên chuyển sang Biome cho dự án frontend.
ESLint đã là tiêu chuẩn linting cho JavaScript/TypeScript hơn 10 năm. Nhưng Biome (tiền thân là Rome) đang thách thức vị trí đó với tốc độ nhanh hơn 100-200x. Liệu đã đến lúc chuyển?
Benchmark thực tế
Mình test trên một monorepo ~500 files TypeScript:
- ESLint: 12.3 giây (với cache: 4.1 giây)
- Biome: 0.08 giây
Đúng vậy, 0.08 giây. Biome viết bằng Rust, parse và lint trong một pass duy nhất, không cần chạy Node.js runtime.
Biome làm được gì?
Biome không chỉ là linter — nó là all-in-one toolchain:
- Linter: 300+ rules, bao gồm hầu hết ESLint recommended + typescript-eslint
- Formatter: Thay thế Prettier, compatible với Prettier output
- Import sorting: Tự động sắp xếp imports
- Upcoming: Type checker, bundler, test runner
Setup Biome
# Install
npm install -D @biomejs/biome
# Init config
npx biome init
File biome.json được tạo ra:
{
"": "https://biomejs.dev/schemas/1.9.0/schema.json",
"organizeImports": {
"enabled": true
},
"linter": {
"enabled": true,
"rules": {
"recommended": true,
"complexity": {
"noForEach": "warn"
},
"style": {
"noNonNullAssertion": "error",
"useConst": "error"
}
}
},
"formatter": {
"enabled": true,
"indentStyle": "space",
"indentWidth": 2
},
"javascript": {
"formatter": {
"quoteStyle": "double",
"semicolons": "always"
}
}
}
So sánh chi tiết
Biome thắng ở:
- Performance: Nhanh hơn 100x+, CI pipeline giảm đáng kể
- Zero config: Defaults hợp lý, không cần 5 packages + 3 config files
- Unified tool: Linter + Formatter + Import sorter trong 1 binary
- Error messages: Rõ ràng, có code fix suggestions
- Consistency: Formatter deterministic, không có edge cases như Prettier
ESLint vẫn mạnh ở:
- Ecosystem: 3000+ plugins (eslint-plugin-react, jsx-a11y, import, testing-library...)
- Custom rules: Viết rule riêng cho team conventions
- Framework plugins: Next.js, Nuxt, Angular đều có ESLint plugins chính thức
- Flat config: ESLint 9 đã cải thiện DX đáng kể
Migration strategy
Không cần chuyển all-or-nothing. Approach mình recommend:
- Bước 1: Dùng Biome làm formatter thay Prettier (ít risk nhất)
- Bước 2: Bật Biome linter cho rules mà ESLint plugin không cần thiết
- Bước 3: Dần loại bỏ ESLint rules đã có trong Biome
- Bước 4: Giữ ESLint chỉ cho những plugin chưa có alternative
Khi nào nên chuyển?
Chuyển ngay nếu: Project mới, không phụ thuộc nhiều ESLint plugins, CI time là concern.
Chờ thêm nếu: Dùng nhiều ESLint plugins đặc thù (a11y, testing-library), cần custom rules, team chưa sẵn sàng thay đổi tooling.
Hybrid: Dùng Biome formatter + ESLint linter. Đây là approach thực tế nhất cho projects đang chạy.
Biome đang phát triển rất nhanh và community growing. 2026 có thể là năm mà Biome trở thành lựa chọn mặc định cho projects mới. Nhưng ESLint không biến mất — ecosystem quá lớn.
Admin
Bình luận (0)
Đăng nhập để bình luận
Chưa có bình luận nào. Hãy là người đầu tiên!