PNPM 정의
pnpm
은 Performant NPM
의 약자로, NodeJS
환경에서 사용되는 고성능 패키지 매니저이다.
기존의 npm
, yarn
과 동일한 목적을 가지지만, 저장 공간 절약과 빠른 설치 속도가 특징이다.
특징
- 하드 링크 (hard link)를 이용한 패키지 저장 구조를 가지고 있다.
- 동일한 패키지를 중복으로 다운로드하지 않는다.
- 모노레포 (Monorepo) 환경에 최적화 되어 있다.
- npm
및 yarn
과 높은 호환성을 유지한다.
설치 방법
조건
- NodeJS 14 버전 이상
- npm
사용 가능
설치 명령어
npm install -g pnpm
설치 확인 (버전 확인)
pnpm -v
기본 사용법
프로젝트 초기화
pnpm init
패키지 설치
npm install # 전체 의존성 설치
pnpm add react # 패키지 추가
pnpm add -D typescript # devDependencies로 추가
pnpm remove react # 패키지 제거
실행 명령
pnpm run build # npm script 실행
pnpm dev # script 이름 그대로 실행 가능
주요 명령어 요약
명령어 | 설명 |
pnpm install | 의존성 설치 (기존 package.json 기준) |
pnpm add <pkg> | 새 패키지 설치 |
pnpm add -D <pkg> | 개발용 의존성 설치 |
pnpm remove <pkg> | 패키지 제거 |
pnpm update | 패키지 업데이트 |
pnpm list | 설치된 패키지 목록 출력 |
pnpm run <script> | 정의된 npm 스크립트 실행 |
pnpm dlx <pkg> | npx처럼 실행 후 자동 삭제 |
pnpm과 모노레포(Monorepo)
pnpm
은 workspace
기능을 제공하여, 다수의 프로젝트를 하나의 저장소로 관리할 때도 효율적으로 동작한다.
예시 pnpm-workspace.yaml
packages:
- 'packages/*'
- 'apps/*'
모노레포 구조를 고려한 성능 최적화가 잘 되어 있어, 기업에서도 많이 채택하는 방식이다.
node_modules의 차별화
pnpm은 기존의 플랫(flat) node_modules 대신, 심볼릭 링크 기반 구조를 사용한다.
- 모든 패키지는 전역 저장소에 캐시된다.
- 프로젝트에는 필요한 패키지들만 링크되어 공간과 속도를 모두 절약한다.
요약
항목 | pnpm 특징 |
설치 속도 | 매우 빠름 (캐싱 구조 덕분) |
디스크 사용량 | 낮음 (중복 저장 없음) |
호환성 | npm/yarn과 대부분 호환 |
주요 대상 | 모노레포, 대규모 프로젝트 |
참고 링크
- 공식 홈페이지: https://pnpm.io
- GitHub 저장소: https://github.com/pnpm/pnpm
- 모노레포 가이드: https://pnpm.io/monorepo