Package Manager Migration
INFRASTRUCTURE •
Situation
Yarn Berry PnP 패키지 매니저가 Vercel 의 배포환경과 호황되지 않는 치명적인 문제 발생.
Vercel 의 배포 환경은 전통적인 node_modules 디렉토리를 기반으로 build 되는데, Yarn Berry 로 가능하게 하기 위해서는 Zip 파일 시스템 설정 및 빌드 시 .pnp.cjs참조 설정 등 추가 설정들이 다수 필요.
Next.js 의 standalone 빌드에서도 추가적인 문제가 발생함.
Task
- 모노레포 설정을 유지하면서 패키지 매니저를 Yarn Berry PnP 에서 PNPM 으로 이관
Action
1. Package Manager Migration
- Yarn Berry 설정 파일들 삭제 (
.yarnrc.yml,.pnp.cjs) - PNPM 을 설치하고 workspace 프로토콜 추가 설정
- 모든
package.json에서 workspace 참조를 PNPM 에 맞게 변경
2. Build System Updates
- Docker 이미지 빌드 스크립트를 PNPM 에 맞게 변경
- CI/CD 파이프라인 수정 (GitHub Actions)
- Vercel 환경에 맞도록 빌드 옵션 수정
- standalone 빌드 옵션의 정상 작동 확인
3. Monorepo Configuration
- Yarn workspace 설정을 PNPM 에 맞게 변경
- Turborepo 설정 수정
- 모듈 참조 정상 작동 확인
Result
Zero-install 의 이점을 포기한 대신, Vercel 배포 환경 및 Next.js standalone 빌드 옵션과의 호환성을 확보함. 이에 따라, Docker 이미지의 크기도 1GB 이상에서 346MB 로 감소.