작성완료

pnpm 기초
pnpm은 고성능 패키지 매니저로, 저장 공간 절약과 빠른 설치 속도가 특징이다. NodeJS 14 이상에서 사용 가능하며, npm과의 높은 호환성을 유지한다. 주요 명령어로는 패키지 설치, 제거, 업데이트 등이 있으며, 모노레포 환경에서 효율적으로 작동한다. 심볼릭 링크 기반 구조를 사용하여 디스크 사용량을 줄이고, 캐싱 구조 덕분에 설치 속도가 매우 빠르다.
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