💻
프로그래밍
pnpm
pnpm
빠르고 디스크 효율적인 Node.js 패키지 매니저. 하드 링크 활용.
pnpm
빠르고 디스크 효율적인 Node.js 패키지 매니저. 하드 링크 활용.
pnpm(performant npm)은 npm, Yarn과 함께 Node.js 생태계의 주요 패키지 매니저 중 하나입니다. 가장 큰 특징은 하드 링크와 심볼릭 링크를 활용한 독특한 저장 방식으로, 디스크 공간을 획기적으로 절약합니다.
pnpm은 글로벌 저장소에 패키지를 한 번만 저장하고, 각 프로젝트에서는 하드 링크로 연결합니다. 예를 들어 10개 프로젝트에서 같은 버전의 lodash를 사용해도 실제로는 한 번만 다운로드됩니다. 이는 대규모 모노레포에서 특히 효과적입니다.
또한 pnpm은 엄격한 node_modules 구조를 사용합니다. 패키지는 자신의 dependencies만 접근할 수 있어 유령 의존성(phantom dependencies) 문제를 방지합니다. 이는 package.json에 명시되지 않은 패키지를 실수로 사용하는 것을 막아줍니다.
설치 속도도 빠릅니다. 콘텐츠 주소 기반 저장소와 병렬 설치 덕분에 npm보다 최대 2배 이상 빠른 설치가 가능합니다. workspace 기능도 내장되어 있어 모노레포 관리에 최적화되어 있습니다.
# pnpm 설치
npm install -g pnpm
# 프로젝트 의존성 설치
pnpm install
# 패키지 추가
pnpm add express
pnpm add -D typescript # devDependencies로 추가
# 워크스페이스에서 특정 패키지에 설치
pnpm add lodash --filter @myorg/api
# 스크립트 실행
pnpm run build
pnpm test
# 모든 워크스페이스에서 명령 실행
pnpm -r run build # recursive
# 패키지 업데이트
pnpm update
pnpm update --interactive # 대화형 업데이트
# 불필요한 패키지 정리
pnpm prune
# 저장소 크기 확인
pnpm store status