Return

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 로 감소.