ช่วงที่ฝึกงานเมื่อไม่นานมานี้ ผมได้สัมผัสกับโค้ดเบสขนาดใหญ่ของผลิตภัณฑ์เป็นครั้งแรก การประเมินขอบเขตผลกระทบของการเปลี่ยนแปลงทำได้ยาก และต้องคอยคิดซ้ำ ๆ ว่า “โค้ดนี้ควรถูกอ้างอิงจากที่ไหน” ผมจึงคิดว่าหากบังคับใช้ขอบเขตของ import ด้วยการวิเคราะห์แบบสถิต (ESLint) ก็น่าจะช่วยรักษาคุณภาพสถาปัตยกรรมได้อย่างเสถียรมากขึ้น
ผมทราบว่า eslint-plugin-boundaries ก็สามารถสร้างกฎที่คล้ายกันได้เช่นกัน แต่เมื่อนำไปใช้กับฟรอนต์เอนด์ การตั้งค่าจะซับซ้อนขึ้น และแม้จะเป็น target ที่อนุญาตแล้ว ก็ยังยากที่จะบังคับรูปแบบของ import path ไปด้วย
ดังนั้นผมจึงสร้าง eslint-plugin-import-boundary ขึ้นมา เพื่อให้โครงสร้างโฟลเดอร์ของโปรเจกต์ JS(TS) กลายเป็นกฎได้ด้วยการตั้งค่าที่เรียบง่าย
- โดยพื้นฐานแล้ว parent สามารถ import ได้เฉพาะ public entry ของไดเรกทอรีลูกโดยตรงเท่านั้น
- สามารถกำหนดรูปแบบไฟล์ public entry ได้ (ค่าเริ่มต้น: index)
- สามารถกำหนดไฟล์/โฟลเดอร์ที่ใช้ร่วมกัน เพื่อให้โมดูลที่แชร์สามารถถูก import ได้เฉพาะภายในขอบเขตนั้น โดยตัวมันเองและพื้นที่ไดเรกทอรีย่อยเท่านั้น
เนื่องจากยังอยู่ในช่วงเริ่มต้น จึงยินดีรับฟีดแบ็กและความคิดเห็นครับ ขอบคุณครับ!
- เอกสาร: https://nayounsang.github.io/eslint-plugin-import-boundary/
- ติดตั้ง:
pnpm add -D eslint-plugin-import-boundary eslint
ยังไม่มีความคิดเห็น