ข้ามไปเนื้อหาหลัก

✓ เสร็จแล้ว

Shareable ESLint Config

ESLint configuration package ที่แชร์ได้ across TypeScript projects — รวม rules สำหรับ Node.js, Astro, และ vanilla TS ในชุดเดียว

· อ่านประมาณ 1 นาที

สารบัญ

ภาพรวม

เมื่อ 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 + husky template ให้ติดตั้งได้เร็ว
  • เขียน 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+