이 프로젝트는 Yarn Berry 4.9.4와 node_modules 방식을 사용하여 의존성을 관리합니다. Yarn Berry의 고급 기능과 Workspace를 활용한 모노레포 관리에 중점을 둡니다.
# PnP 방식에서 발생하는 문제들
yarn install
# → Prisma generate 실행 시 오류 발생
# → postinstall 스크립트에서 멈춤
# → 빌드 과정에서 패키지 찾기 실패
문제점:
- Prisma가 PnP 환경에서 제대로 작동하지 않음
- postinstall 스크립트 실행 시 패키지 경로 문제
- 개발 도구들이 PnP를 완전히 지원하지 않음
# PnP 방식에서 발생하는 문제들
- VS Code에서 타입 인식 실패
- ESLint/Prettier 설정 복잡
- 디버깅 도구 작동 불안정문제점:
- IDE 지원이 제한적
- 개발 도구 설정이 복잡
- 디버깅과 프로파일링 어려움
- 공통 의존성: 여러 workspace에서 공통으로 사용하는 패키지들은 **루트의 node_modules/**에만 설치됩니다
- 고유 의존성: 특정 workspace에서만 사용하는 패키지들은 **해당 workspace의 node_modules/**에 설치됩니다
## ⚙️ 주요 설정 파일
### `.yarnrc.yml` - node_modules 설정의 핵심
```yaml
# node_modules 방식 사용 (PnP 대신)
nodeLinker: node-modules
Hoisting이란?
- 여러 workspace에서 공통으로 사용하는 패키지들을 루트
node_modules/로 끌어올리는 기능 - 중복 제거와 디스크 공간 절약 효과
현재 프로젝트 설정:
nodeLinker: node-modules로 설정되어 전통적인 node_modules 방식 사용- Workspace hoisting으로 공통 의존성들을 루트에서 관리
- 각 프로젝트별 고유 의존성만 해당 workspace에 설치
- Workspace Hoisting: 공통 의존성을 루트에서 관리하여 중복 제거
- 명확한 의존성: yarn.lock으로 정확한 버전 고정