ESLint v10: Xóa bỏ hoàn toàn hệ thống cấu hình cũ và cải thiện theo dõi JSX

01 tháng 4, 2026·5 phút đọc

ESLint phiên bản 10 đã chính thức ra mắt, đánh dấu cột mốc thay đổi lớn nhất kể từ khi hệ thống cấu hình phẳng (flat config) được giới thiệu. Phiên bản này loại bỏ hoàn toàn hệ thống eslintrc cũ, buộc các đội phát triển phải di chuyển sang định dạng mới. Bên cạnh đó, bản cập nhật này còn cải thiện trải nghiệm người dùng bằng cách thay đổi cách tìm kiếm file cấu hình và khắc phục các lỗi đánh dấu biến không dùng trong JSX.

ESLint v10: Xóa bỏ hoàn toàn hệ thống cấu hình cũ và cải thiện theo dõi JSX

ESLint v10: Cuối cùng cũng bỏ hoàn toàn eslintrc cũ

ESLint, công cụ kiểm tra cú pháp và lỗi phổ biến cho JavaScript và TypeScript, đã phát hành phiên bản 10. Đây được coi là bước ngoặt lớn nhất về tính năng phá vỡ (breaking change) kể từ khi hệ thống cấu hình phẳng (flat config) được giới thiệu. Phiên bản này hoàn tất nhiều năm phát triển, loại bỏ các API đã lỗi thời và mang lại nhiều cải thiện trải nghiệm người dùng, tập trung vào các tác giả plugin và các đội nhóm quản lý monorepo.

Xóa bỏ hoàn toàn eslintrc

Sự thay đổi quan trọng nhất trong phiên bản 10 là việc loại bỏ hoàn toàn hệ thống cấu hình cũ eslintrc. Mặc dù từ phiên bản 9, cấu hình phẳng (eslint.config.js) đã được mặc định sử dụng, nhưng định dạng cũ vẫn có thể truy cập qua lớp tương thích LegacyESLint. Lớp này nay đã bị xóa bỏ hoàn toàn. Các phương thức như defineParser(), defineRule(), defineRules(), và getRules() trên đối tượng Linter đã bị gỡ bỏ, và hàm shouldUseFlatConfig() giờ đây luôn trả về true.

Các đội nhóm vẫn đang sử dụng file .eslintrc sẽ cần phải di chuyển trước khi nâng cấp. Tuy nhiên, việc này trở nên đơn giản hơn nhờ công cụ chuyển đổi chính thức:

npx @eslint/migrate-config .eslintrc.json

Công cụ này tạo ra một file eslint.config.mjs có thể được kiểm tra và chỉnh sửa. Một hướng dẫn chi tiết về các thay đổi phá vỡ có sẵn trên trang web chính thức của ESLint.

Tìm kiếm file cấu hình từ thư mục file

Phiên bản 10 thay đổi cách ESLint tìm kiếm file cấu hình. Thay vì bắt đầu tìm kiếm từ thư mục làm việc hiện tại (current working directory), nó giờ sẽ bắt đầu từ thư mục chứa file đang được kiểm tra. Đây là cải tiến có ý nghĩa cho các thiết lập monorepo, nơi các gói khác nhau có thể cần các quy tắc khác nhau, và mang hành vi tra cứu này phù hợp với những gì nhiều nhà phát triển mong đợi.

Theo dõi tham chiếu JSX được cải thiện

Theo dõi tham chiếu JSX là một tính năng nổi bật khác. Trước đây, ESLint không nhận diện các định danh JSX là tham chiếu biến, dẫn đến dương tính giả (false positives) với các quy tắc như no-unused-vars. Một thành phần được nhập khẩu và chỉ dùng trong JSX sẽ bị báo cáo là không được sử dụng. Các plugin sửa chữa lỗi như @eslint-react/jsx-uses-vars trước đây được dùng để khắc phục vấn đề này, nay không còn cần thiết nữa.

API RuleTester được củng cố

API RuleTester đã được nâng cấp với các tùy chọn kiểm tra mới: requireMessage, requireLocation, và requireData. Những tùy chọn này cho phép các tác giả plugin áp dụng các định nghĩa kiểm tra khắt khe hơn và đảm bảo các bài kiểm tra nhất quán với các thông điệp quy tắc. Các dấu vết ngăn xếp (stack traces) cho các bài kiểm tra thất bại giờ bao gồm cả chỉ số và vị trí file của trường hợp kiểm tra sai, giúp tiết kiệm thời gian tìm lỗi trong các bộ quy tắc lớn.

Yêu cầu Node.js và cập nhật cấu hình

Hỗ trợ cho Node.js đã được siết chặt thành ^20.19.0 || ^22.13.0 || >=24. Các phiên bản v21.x và v23.x đã bị loại bỏ. Cấu hình eslint:recommended cũng đã được cập nhật để bao gồm các quy tắc bổ sung, điều này có thể dẫn đến các báo cáo lỗi mới trong các cơ sở mã hiện có sau khi nâng cấp.

Một vấn đề trên GitHub đã chỉ ra rằng plugin eslint-plugin-react chưa khai báo hỗ trợ ESLint 10 trong các phụ thuộc ngang hàng (peer dependencies), gây ra xung đột khi cài đặt cho nhiều nhà phát triển React. Tương tự, vấn đề cũng được nêu ra với eslint-config-next của Next.js.

Sự cạnh tranh từ các công cụ khác

Một số nhà phát triển trên cộng đồng nhắc đến những đau đầu trong quá trình di chuyển. Một bình luận trên r/javascript nhận xét rằng: "Ý tưởng cấu hình phẳng tuy hay trong lý thuyết nhưng con đường di chuyển rất tệ. Cảm giác như mọi plugin có hỗ trợ cấu hình phẳng hơi khác nhau và bạn phải đoán mò cho đến khi nó hoạt động."

Bài phát hành này tiếp tục cuộc đối thoại cạnh tranh về công cụ JavaScript. Các công cụ dựa trên Rust như Biome và Oxlint đang thu hút sự chú ý với lời hứa về tốc độ kiểm tra linting nhanh hơn đáng kể.

Trên bài đăng thông báo Reddit, nhiều người dùng đề xuất chuyển đổi từ ESLint sang các lựa chọn thay thế như Biome hoặc Oxlint. Một người dùng chia sẻ: "Tôi đã chuyển sang Biome rồi. Dù nó chưa có 100% các quy tắc nhưng khoảng 95%, điều này đủ để bù đắp cho sự chậm chạp của ESLint."

Biome kết hợp kiểm tra cú pháp và định dạng trong một công cụ duy nhất, trong khi các số liệu so sánh của Oxlint tuyên bố Oxlint nhanh gấp 50 đến 100 lần so với ESLint tùy thuộc vào số lượng nhân CPU. Tuy nhiên, sự đánh đổi là độ phủ quy tắc: Oxlint hiện tại chưa khớp được toàn bộ danh mục của ESLint.

ESLint là một công cụ kiểm tra cú pháp mã nguồn mở, có thể mở rộng cho JavaScript và TypeScript, ban đầu được tạo bởi Nicholas C. Zakas vào năm 2013 và hiện được duy trì bởi đội ngũ ESLint dưới OpenJS Foundation. Nó được phát hành dưới giấy phép MIT và đạt hơn 120 triệu tải xuống hàng tuần trên npm.

Các bản vá lỗi cho v10.0.1 và v10.0.3 đã được phát hành, và phiên bản v10.1.0 được phát hành vào ngày 20 tháng 3 năm 2026.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗