Biome: Công cụ lint và format thay thế ESLint + Prettier

Biome là công cụ chuẩn hoá lập trình JavaScript và TypeScript mới, viết bằng Rust, ra mắt như một fork thay thế trực tiếp cho ESLint (lint) và Prettier (định dạng). Ra đời từ dự án Rome Tools, Biome hứa hẹn mang lại trải nghiệm dev đơn giản và tốc độ hàng trăm lần nhanh hơn so với kết hợp JavaScript cũ. Bài viết này tổng hợp tính năng, benchmark và cách dời chuyển dự án hiện tại sang Biome một cách an toàn.

Atom code editor dark theme showing Python sync_data.py script

Lịch sử hình thành

Dự án ban đầu tên gọi là Rome Tools, khởi xướng bởi đội ngũ của Sebastian McKenzie (tạo ra Babel và Yarn). Rome hứa hẹn thay thế toàn bộ ngăn xếp ESLint + Prettier + bundler trong một binary duy nhất. Tuy nhiên, dự án dừng phát triển vào năm 2023. Cộng đồng sau đó fork lại làm Biome, tập trung vào linting và formatting trước — phần mạnh nhất của Rome ban đầu.

Phiên bản ổn định 2.x hiện đã ra mắt, Biome đang được nhiều dự án production như Next.js, Preact và một số startup adopt dần.

Kiến trúc và tính năng chính

Biome viết hoàn toàn bằng Rust, biên dịch thành một binary duy nhất — không cần cài Node.js hay runtime nào khác. Tính năng nổi bật:

Tính năng Mô tả
Formatter Thay thế Prettier, hỗ trợ Prettier config để dễ dời chuyển
Linter 500+ rule, bao gồm cả ESLint rule tương đương
Import organizer Sắp xếp import tự động theo thứ tự
Language server Thời gian thực trong editor qua LSP
Vệ sinh dự án Kiểm tra import thừa, mã chết, security

Định dạng hỗ trợ đầy đủ JavaScript, TypeScript, JSX, TSX, JSON, CSS và GraphQL. Cấu hình mặc định ra đời mà không cần bật bất kỳ rule nào — đây là chính sách “batteries included” của Biome.

Analytics dashboard showing performance metrics and load time analysis

Hiệu năng: 10–35x nhanh hơn

Nhờ Rust, Biome xử lý ngàn file trong thời gian ngắn. Test benchmark công bố trên trang chính thức cho thấy Biome nhanh hơn ESLint + Prettier khoảng 10–35 lần tùy dự án. Đối với CI pipeline build hàng ngàn lần, thời gian lint+format có thể giảm từ vài phút xuống vài giây, cải thiện đáng kể thời gian chờ developer.

Benchmark chi tiết trên repo 1000 file TypeScript thực tế:

  • ESLint + Prettier: ~45 giây
  • Biome check + format: ~1.3 giây

Điểm mạnh là không cần cache hoặc worker processes phức tạp — binary đơn chạy tuần tự nhanh hơn cả cluster Node.js với multi-process.

Cách dời chuyển từ ESLint + Prettier

Biome cung cấp công cụ migrate trực tiếp:

biome migrate --write-eslint

Lệnh này tự động chuyển đổi file cấu hình ESLint và Prettier sang biome.json. Để adopt dần (gradual adoption), có thể giữ Biome chạy đồng thời với ESLint trong giai đoạn chuyển đổi, rồi dần tắt ESLint khi nắm chắc.

Các bước khuyến nghị:

  1. Cài Biome: npm install --save-dev @biomejs/biome
  2. Chạy migrate: npx @biomejs/biome migrate --write-eslint
  3. Review file biome.json sinh ra, điều chỉnh rule nếu cần
  4. Chạy biome check . để xem lỗi hiện tại
  5. Tự động sửa: biome check --apply .
  6. Cập nhật CI pipeline để dùng Biome thay vì ESLint + Prettier

Tại sao chuyển đổi?

Bên cạnh tốc độ, Biome cung cấp trải nghiệm đồng nhất: một công cụ thay thế ba công cụ (lint + format + organize), cấu hình tối thiểu và thông báo lỗi rõ ràng. Đặc biệt phù hợp với dự án monorepo hoặc team muốn chuẩn hoá quy tắc toàn công ty mà không lo xung đột cấu hình.

Ưu điểm thực tế:

  • Zero config — chạy ngay biome check trên dự án mới, không cần setup
  • Editor integration — VS Code extension chính thức, hỗ trợ format on save, quick fix
  • VCS integration — chỉ check file thay đổi (staged files) trong pre-commit hook
  • Output chẩn đoán — lỗi hiển thị rõ file, dòng, cột, giải thích ngắn gọn, có thể click vào rule reference

Hạn chế hiện tại

Tuy nhiên, Biome còn hạn chế: số lượng plugin tùng bằng không lớn như ESLint, chưa hỗ trợ custom rule phức tạp. Nên chuyển đổi khi dự án chưa phụ thuộc sâu vào plugin ESLint riêng biệt.

Các điểm cần cân nhắc:

  • Không có ecosystem plugin như eslint-plugin-react, eslint-plugin-jsx-a11y, v.v.
  • Một số rule TypeScript nâng cao chưa được port đầy đủ
  • Team cần quen với rule names mới (ví dụ: noUnusedVariables thay vì @typescript-eslint/no-unused-vars)

Kết luận

Biome đại diện cho thế hệ công cụ dev thế hệ mới: viết bằng ngôn ngữ hệ thống (Rust/Go), binary đơn, hiệu năng cực cao, zero config. Nếu dự án bạn đang chịu đựng thời gian CI chậm do ESLint + Prettier, hoặc muốn đơn giản hoá toolchain, Biome là lựa chọn đáng xem xét ngay hôm nay. Dù vẫn còn trẻ so với ESLint 10 năm tuổi, nhưng tốc độ phát triển và adopt của cộng đồng cho thấy Biome đang trở thành tiêu chuẩn mới cho các dự án JavaScript/TypeScript hiện đại.

Tham khảo thêm: Trang chủ Biome · Hướng dẫn migrate · GitHub Biome

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Flutter là gì?

Flutter là framework mã nguồn mở của Google dùng để xây dựng giao diện ứng dụng cho Android, iOS, web và desktop từ một codebase duy nhất. Nhờ kiến trúc…

Xem thêm

Redis là gì?

Redis là một kho dữ liệu in-memory mã nguồn mở được sử dụng rộng rãi nhất trong giới developer hiện nay. Với tốc độ đọc ghi tính bằng micro giây,…

Xem thêm

Drizzle ORM là gì? ORM TypeScript hiệu năng cao thay thế Prisma

Drizzle ORM là gì? Drizzle ORM là thư viện ORM (Object-Relational Mapping) kiểu headless cho TypeScript và JavaScript, tập trung vào hiệu năng cực cao và trọng lượng thấp. Khác…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất