구분 | 설명 |
---|---|
모노레포 (Monorepo) | 여러 개의 프로젝트(패키지)를 **하나의 저장소(repo)**에서 관리하는 구조 |
멀티레포 (Polyrepo) | 각 프로젝트를 별도의 저장소에서 각각 관리하는 방식 |
장단점
✅ 장점
- 코드 재사용 용이: 패키지 간 import가 간단해짐
- 버전 일관성 유지: 모든 패키지에 동일한 deps 버전 사용 가능
- 일괄 테스트/빌드/릴리즈 가능: CI/CD 통합 관리
- 리팩토링 용이: 전역 범위에서 영향도 파악 및 변경 가능
⚠️ 단점
- 초기 설정 복잡
- 프로젝트 규모 커질수록 성능 저하 위험 (→ Turborepo 등 도구 필요)
- 접근 권한 세분화 어려움 (모든 코드가 한 repo에 있음)
폴더구조 예시
monorepo-demo/
apps/
web/
packages/
ui/
utils/
// package.json
{
"name": "monorepo-demo",
"private": true,
"workspaces": ["apps/*", "packages/*"]
}