คืออะไร Monorepo
Repository เดียวสำหรับทุกโปรเจกต์
Monorepo คือกลยุทธ์การจัดการโค้ดที่เก็บหลายโปรเจกต์ไว้ใน Repository เดียว
ประโยชน์
- Codebase ที่รวมเป็นหนึ่ง
- การเปลี่ยนแปลงแบบ Atomic ข้ามโปรเจกต์
- การนำโค้ดกลับมาใช้ซ้ำ
- การจัดการ Dependencies ที่ง่ายขึ้น
- มาตรฐานและ Linters ที่เป็นหนึ่งเดียว
เครื่องมือ
- Nx — สำหรับ Angular, React, Node.js
- Turborepo — โดย Vercel
- Lerna — สำหรับ npm packages
- Bazel — โดย Google
- Rush — โดย Microsoft
ตัวอย่างบริษัท
- Google (โค้ดทั้งหมดใน repo เดียว)
- Meta (Facebook, Instagram)
- Microsoft (Windows)
- Uber
เมื่อใดควรใช้
- Microservices ของทีมเดียว
- Frontend + backend + shared libraries
- หลายผลิตภัณฑ์ที่เกี่ยวข้อง