- Vào tháng 7 vừa qua, ESLint đã công bố kế hoạch chuyển mình thành một linter có mục đích sử dụng tổng quát hơn, nhằm cung cấp khả năng linting cho mọi ngôn ngữ
- Trong vài tháng qua, họ đã tiến hành tách các phần dành riêng cho JavaScript, và kết quả của công việc này là ESLint giờ đây đã hỗ trợ linting cho JSON và Markdown
Linting JSON với @eslint/json
- Plugin
@eslint/json là một language plugin được hỗ trợ chính thức
- Plugin này cung cấp khả năng phân tích cú pháp cho JSON, JSONC (JSON có chú thích) và JSON5
- Để sử dụng plugin, bạn cần cài đặt từ npm và cập nhật tệp cấu hình
- Plugin có sẵn một số quy tắc tích hợp, và đang chờ thêm nhiều đề xuất hơn
Linting Markdown với @eslint/markdown
- Plugin
@eslint/markdown là phiên bản thế hệ tiếp theo của eslint-plugin-markdown, đồng thời là một language plugin được hỗ trợ chính thức
- Plugin này cung cấp khả năng phân tích cú pháp và các quy tắc cho CommonMark và GitHub-Flavored Markdown
- Để sử dụng plugin, bạn cần cài đặt từ npm và cập nhật tệp cấu hình
- Tương tự plugin JSON, plugin này cũng có các quy tắc tích hợp và đang chờ thêm nhiều đề xuất hơn
Viết quy tắc tùy chỉnh và sử dụng Code Explorer
@eslint/json và @eslint/markdown cũng như JavaScript đều phân tích mã nguồn thành AST và duyệt AST để thực thi các quy tắc
- Vì vậy, tương tự JavaScript, bạn cũng có thể viết các quy tắc tùy chỉnh cho JSON và Markdown
- Khác biệt chính nằm ở định dạng AST: JSON dùng Momoa AST còn Markdown dùng mdast
- Do không có nhiều tài nguyên hỗ trợ kiểm tra các định dạng AST khác nhau, họ đã ra mắt Code Explorer
- Với Code Explorer, bạn có thể xem và khám phá AST của nhiều ngôn ngữ khác nhau để hỗ trợ việc tạo quy tắc tùy chỉnh
Viết language plugin
- Ngôn ngữ trong ESLint được thiết kế để có thể được đưa vào mọi plugin thông qua khóa
languages mới
- Các plugin
@eslint/json và @eslint/markdown không chỉ cung cấp linting cho JSON và Markdown mà còn được dùng như ví dụ về cách tạo ngôn ngữ
- Bạn có thể tham khảo tài liệu về ngôn ngữ để tìm hiểu cách tạo ngôn ngữ của riêng mình
Kết luận
- Việc linting các ngôn ngữ ngoài JavaScript vốn đã nằm trong lộ trình của ESLint, nên việc đạt tới cột mốc này khiến họ rất hào hứng
- Mục tiêu dài hạn của ESLint là cho phép lint mọi loại tệp có thể dùng trong dự án web thông qua các language plugin được hỗ trợ chính thức hoặc plugin do cộng đồng viết
- Với JavaScript, JSON và Markdown, họ đã tiến khá vững chắc tới mục tiêu đó
1 bình luận
Markdown hay đấy.