Yarn Classic 탈출! Pnpm으로 모노레포 의존성 관리 효율 UP!

by DD
2년 전
조회수 8

Yarn Classic유령 의존성 문제를 해결하기 위해 Pnpm으로 전환

PnpmContent-addressable Store 방식을 통해 디스크 공간 절약 및 유령 의존성 문제 해결

Amplify Preview 빌드 시간 3배 단축, Github Action 설치 시간 25-30초로 개선

Pnpm의 핵심 원리: Content-addressable Store

Pnpm은 Content-addressable Store 방식을 통해 의존성을 관리한다. 구체적으로, 전역 스토어에 종속성을 설치하고 심볼릭 링크하드 링크를 사용하여 프로젝트의 `node_modules`를 구성한다. 따라서 유령 의존성 문제를 해결하고 디스크 공간 절약을 가능하게 한다. 결과적으로, 모노레포 환경에서 효율적인 의존성 관리를 지원한다.

Yarn Classic vs Pnpm: 장단점 비교

Yarn Classic은 호이스팅을 사용해 의존성을 관리하지만, 유령 의존성 문제를 야기한다. 반면, Pnpm은 Content-addressable Store를 통해 안정적인 의존성 관리를 제공한다. 따라서 Pnpm설치 속도 향상보안 강화 측면에서 유리하다. 하지만, Pnpm은 심볼릭 링크를 지원하지 않는 환경에서는 추가 설정이 필요할 수 있다.

Pnpm 도입 가이드: Turbo Repo 환경

Turbo Repo 환경에서 Pnpm 도입 시, `pnpm-workspace.yaml` 파일을 생성하여 워크스페이스를 정의한다. 구체적으로, `pnpm install` 명령어를 실행하여 의존성을 재설치하고, `depcheck`를 통해 유령 의존성을 확인한다. 따라서 Amplify Preview 환경에서는 .npmrc 설정을 통해 빌드 문제를 해결해야 한다. 결과적으로, Github Action 캐싱을 통해 빌드 속도를 최적화할 수 있다.

Yarn Classic에서 Pnpm으로 전환하기 with TurboRepo