✓ เสร็จแล้ว
Shareable ESLint Config
ESLint configuration package ที่แชร์ได้ across TypeScript projects — รวม rules สำหรับ Node.js, Astro, และ vanilla TS ในชุดเดียว
สารบัญ
ภาพรวม
เมื่อ projects TypeScript เพิ่มขึ้น การ copy .eslintrc ไปแต่ละ project ทำให้ configuration drifted ต่างกัน โปรเจกต์นี้รวมทุก rule ไว้ใน npm package เดียว publish เป็น private package ใช้เองผ่าน file: protocol
สิ่งที่ทำ
- ออกแบบ config สำหรับ 3 preset:
base(vanilla TS),node(Node.js scripts),astro - ใช้ ESLint 9 Flat Config format
- ตั้ง
@typescript-eslint/no-floating-promisesและno-explicit-anyเป็น default - เพิ่ม
lint-staged+huskytemplate ให้ติดตั้งได้เร็ว - เขียน README พร้อมตัวอย่างการ extend แต่ละ preset
ปัญหาที่เจอ
tseslint.config() ใน ESLint 9 ไม่ยอมรับ extends แบบเดิม ต้องเปลี่ยนจาก array spread เป็น tseslint.config(parent, override) pattern และปรับ parserOptions.project ให้ resolve relative to consumer project ไม่ใช่ package เอง
เทคโนโลยี
- TypeScript ESLint v8
- ESLint 9 (Flat Config)
- Node.js 20+