Gần đây, trong thời gian thực tập, tôi lần đầu trải nghiệm một codebase sản phẩm rất lớn. Rất khó ước lượng phạm vi ảnh hưởng của các thay đổi, và tôi liên tục phải suy nghĩ “đoạn code này nên được tham chiếu từ đâu”. Tôi nghĩ rằng nếu cưỡng chế ranh giới import bằng phân tích tĩnh (ESLint), có thể duy trì chất lượng kiến trúc ổn định hơn. Tôi biết rằng cũng có thể tạo các quy tắc tương tự bằng eslint-plugin-boundaries. Tuy nhiên, khi áp dụng ở frontend, phần cấu hình trở nên phức tạp, và ngay cả với target được cho phép, cũng khó cưỡng chế đến cả hình thức của import path.
Vì vậy, tôi đã tạo eslint-plugin-import-boundary, nơi cấu trúc thư mục của dự án JS(TS) trở thành quy tắc chỉ với cấu hình đơn giản.
- Theo mặc định, thư mục cha chỉ có thể import public entry của thư mục con trực tiếp
- Có thể chỉ định định dạng file public entry (mặc định: index)
- Có thể chỉ định file(thư mục) dùng chung, để module chia sẻ chỉ có thể được import trong phạm vi đó bởi chính nó và các vùng thư mục con.
Vì vẫn còn ở giai đoạn đầu, tôi rất hoan nghênh phản hồi và ý kiến. Xin cảm ơn!
- Tài liệu: https://nayounsang.github.io/eslint-plugin-import-boundary/
- Cài đặt:
pnpm add -D eslint-plugin-import-boundary eslint
Chưa có bình luận nào.