ไม่มีชื่อบทความ
คู่มืออธิบายไฟล์และโฟลเดอร์ที่ถูก Generate ขึ้นโดยอัตโนมัติ
บทความนี้จัดทำขึ้นเพื่ออธิบายที่มา หน้าที่ และคำแนะนำในการจัดการไฟล์และโฟลเดอร์ต่าง ๆ ที่ถูกสร้างขึ้นอัตโนมัติในโปรเจกต์ของเรา
1. โฟลเดอร์ .turbo/
ถูก generate ขึ้นมาได้อย่างไร:
- ถูกสร้างขึ้นอัตโนมัติโดย Turbo (เช่น Turborepo) เมื่อมีการรันคำสั่งที่เกี่ยวข้องกับ Turbo เช่น
turbo run buildหรือturbo run lint
ถูก generate มาจากไฟล์/คำสั่งไหน:
- ทุกครั้งที่ Turbo ทำงานเพื่อเก็บ cache ผลลัพธ์ต่าง ๆ
หน้าที่/บทบาท:
- เก็บข้อมูล cache และผลลัพธ์ของการ build/lint/test เพื่อให้ build ครั้งต่อไปเร็วขึ้น
ควรเพิ่มใน .gitignore หรือไม่:
- ควรเพิ่มใน
.gitignoreเนื่องจากเป็นไฟล์ cache ที่แต่ละเครื่องจะมีข้อมูลที่แตกต่างกัน
หมายเหตุ:
- หากต้องการ build หรือ rebuild โปรเจกต์แบบสะอาด สามารถลบโฟลเดอร์นี้ก่อนเริ่มการ build ใหม่ได้
2. โฟลเดอร์ node_modules/
ถูก generate ขึ้นมาได้อย่างไร:
- สร้างโดยอัตโนมัติเมื่อใช้คำสั่งติดตั้ง dependency เช่น
npm install,pnpm install, หรือyarn install
ถูก generate มาจากไฟล์/คำสั่งไหน:
- สร้างจาก package manager ที่ใช้งาน เช่น npm, yarn, pnpm
หน้าที่/บทบาท:
- เก็บ dependency ทั้งหมดที่โปรเจกต์ใช้งาน
ควรเพิ่มใน .gitignore หรือไม่:
- ควรเพิ่มใน
.gitignoreเพราะมีขนาดใหญ่ และแต่ละเครื่องอาจมีการติดตั้ง dependency ต่างกันตามสภาพแวดล้อม
หมายเหตุ:
- ควรมีไฟล์ lock เช่น
package-lock.json,yarn.lock, หรือpnpm-lock.yamlเพื่อความสม่ำเสมอในการจัดการ dependency ทุกครั้ง
3. โฟลเดอร์ .next/ (สำหรับ Next.js)
ถูก generate ขึ้นมาได้อย่างไร:
- สร้างขึ้นโดยอัตโนมัติเมื่อรันคำสั่ง
next buildหรือnext dev
ถูก generate มาจากไฟล์/คำสั่งไหน:
next build,next dev
หน้าที่/บทบาท:
- เก็บไฟล์ build, output, cache และข้อมูลอื่น ๆ ที่ Next.js ใช้งาน
ควรเพิ่มใน .gitignore หรือไม่:
- ควรเพิ่มใน
.gitignoreเพราะเป็นไฟล์ที่สามารถ build ใหม่ได้ทุกครั้งที่มีการ deploy หรือพัฒนาต่อ
หมายเหตุ:
- ในขั้นตอน deploy อาจมีการ copy บางไฟล์จากโฟลเดอร์นี้ไปใช้ แต่ไม่ควร commit เข้า git โดยตรง
4. โฟลเดอร์ dist/ หรือ build/
ถูก generate ขึ้นมาได้อย่างไร:
- สร้างโดยคำสั่ง build ของภาษาหรือ framework เช่น
tsc(TypeScript),webpack,vite
ถูก generate มาจากไฟล์/คำสั่งไหน:
npm run build,pnpm build
หน้าที่/บทบาท:
- เก็บไฟล์ที่เป็นผลลัพธ์ของการ build ซึ่งพร้อมสำหรับการ deploy
ควรเพิ่มใน .gitignore หรือไม่:
- ควรเพิ่มใน
.gitignoreยกเว้นกรณีพิเศษที่จำเป็นต้องใช้สำหรับ npm package หรือ static deploy
หมายเหตุ:
- หากใช้ระบบ CI/CD ควรให้ build ใหม่ทุกครั้งเพื่อความสะอาดและถูกต้อง
5. ไฟล์ pnpm-lock.yaml
ถูก generate ขึ้นมาได้อย่างไร:
- สร้างและอัปเดตโดยอัตโนมัติทุกครั้งที่มีการติดตั้ง อัปเดต หรือลบ dependency ผ่าน pnpm
ถูก generate มาจากไฟล์/คำสั่งไหน:
- จากการรันคำสั่งของ pnpm เช่น
pnpm install,pnpm add,pnpm remove
หน้าที่/บทบาท:
- ล็อกเวอร์ชัน dependency ทั้งหมดที่ใช้จริงในโปรเจกต์ เพื่อให้การติดตั้ง dependency เป็นไปอย่างสม่ำเสมอทุกเครื่อง
ควรเพิ่มใน .gitignore หรือไม่:
- ไม่ควรเพิ่มใน
.gitignoreและควร commit เข้า repo เพื่อให้ทุกเครื่องที่ clone โปรเจกต์มี dependency เดียวกัน
หมายเหตุ:
- ไม่ควรแก้ไขไฟล์นี้ด้วยมือโดยตรง ควรให้ pnpm จัดการเท่านั้น
บทความนี้จะช่วยให้ทุกคนในทีมสามารถจัดการไฟล์ที่ถูก generate อัตโนมัติได้อย่างถูกต้อง ลดปัญหาการ commit ไฟล์ที่ไม่จำเป็น และช่วยให้ workflow การทำงานเป็นไปได้อย่างราบรื่น