Skip to content

Monorepo คืออะไร

Monorepo คือการมีหลาย Project ใน Repository เดียว

ข้อดีของ Monorepo

Monorepo คือการเก็บหลายๆ โครงการ (Project) ใน repository เดียว ซึ่งช่วยให้การจัดการโค้ดในโปรเจกต์ที่แตกต่างกันในองค์กรง่ายขึ้นและสะดวกต่อการบำรุงรักษา

  1. การจัดการเวอร์ชันร่วมกัน

    • การใช้ monorepo ช่วยให้ทุกโปรเจกต์ใน repository เดียวกันใช้เวอร์ชันเดียวกันของไลบรารีหรือเครื่องมือที่ใช้ร่วมกัน ทำให้สามารถอัปเดตและบำรุงรักษาได้ง่าย
  2. การแชร์โค้ดระหว่างโปรเจกต์ได้ง่าย

    • โค้ดที่ใช้ร่วมกันระหว่างโปรเจกต์สามารถแชร์ได้ใน monorepo โดยไม่ต้องสร้าง dependency แยกต่างหาก ทำให้การแชร์โค้ดเป็นไปอย่างราบรื่น
  3. การประสานงานระหว่างทีม

    • การมี repository เดียวช่วยให้ทีมพัฒนาทุกคนสามารถเห็นการเปลี่ยนแปลงในโค้ดทั้งหมดได้ ทำให้การทำงานร่วมกันระหว่างทีมต่างๆ เป็นไปได้ง่ายขึ้น
  4. ง่ายต่อการบำรุงรักษา

    • การบำรุงรักษาส่วนประกอบที่ใช้ร่วมกันในหลายๆ โปรเจกต์สามารถทำได้ในที่เดียว ช่วยให้การอัปเดตหรือแก้ไขบั๊กทำได้ทันทีในทุกโปรเจกต์ที่เกี่ยวข้อง
  5. การควบคุมการสร้าง (Build) และการทดสอบที่มีประสิทธิภาพ

    • เครื่องมือ build สามารถตั้งค่าให้คอมไพล์เฉพาะส่วนที่เปลี่ยนแปลงและทดสอบโปรเจกต์ที่เกี่ยวข้อง ทำให้การสร้างโปรเจกต์รวดเร็วขึ้น
  6. การจัดการ Dependency ที่ง่าย

    • การจัดการ dependencies ทั้งหมดใน monorepo ทำให้สามารถติดตามไลบรารีที่ใช้ได้ง่าย และอัปเดตได้ทั้งในหลายโปรเจกต์พร้อมกัน
  7. การทำงานร่วมกันในระดับสูง

    • ทีมต่างๆ ที่ทำงานในโปรเจกต์ต่างๆ จะสามารถทำงานร่วมกันได้สะดวกขึ้น เมื่อทุกคนทำงานใน repository เดียวกันจะมีความเข้าใจร่วมกันเกี่ยวกับโค้ด

Turborepo คือ Monorepo Management

Turborepo เป็นเครื่องมือที่ช่วยจัดการ Monorepo โดยมีคุณสมบัติเด่น เช่น

  • Build Caching: ใช้ caching เพื่อลดเวลาการ build
  • Parallel Execution: รัน task พร้อมกันหลายโปรเจค
  • Remote Caching: แชร์ cache ระหว่างทีม
  • Task Pipelines: จัดการ task dependencies อย่างเป็นระบบ

เมื่อไหร่ควรใช้ ทำเป็น Monorepo

ควร setup project เป็น monorepo เมื่อ

  • projects มีขนาดใหญ่ขึ้น และมีการใช้ code ร่วมกัน
  • สร้าง libraries ให้คนอื่นใช้