pnpm 소개 및 설치 가이드 - Windows, Ubuntu, macOS 완벽 정리

목차
- pnpm이란?
- 사전 요구사항
- Windows 설치 방법
- Ubuntu(Linux) 설치 방법
- macOS 설치 방법
- 설치 확인 및 기본 사용법
- 프로젝트에 pnpm 고정하기
- 트러블슈팅
- 핵심 정리
- 참조 링크
프로젝트가 늘어날수록 node_modules 폴더가 수 GB씩 디스크를 잡아먹는 경험, 해보셨을 겁니다. pnpm(Performant npm)은 이 문제를 근본적으로 해결하기 위해 만들어진 Node.js 패키지 매니저입니다. 동일한 의존성을 딱 한 번만 저장하는 콘텐츠 주소 기반 저장소(content-addressable store) 구조로, npm 대비 디스크 공간을 대폭 절약하고 설치 속도는 최대 3배까지 빠릅니다.
이 글에서는 pnpm이 왜 필요한지, npm/Yarn과 어떻게 다른지 소개하고, Windows, Ubuntu(Linux), macOS 각각의 설치 방법을 단계별로 정리합니다.
pnpm이란?
pnpm은 npm, Yarn과 동일한 역할을 하는 Node.js 패키지 매니저이지만, 의존성을 관리하는 방식이 근본적으로 다릅니다.
핵심 차별점 3가지
| 특징 | npm/Yarn Classic | pnpm |
|---|---|---|
| 저장 방식 | 프로젝트마다 의존성 복사 | 글로벌 저장소에 한 번 저장 + 하드 링크 |
| 디스크 사용 | 100개 프로젝트 = 100배 용량 | 100개 프로젝트 = 1배 용량 |
| 설치 속도 | 순차적 3단계 처리 | 3단계 동시 병렬 처리 (최대 3배 빠름) |
| node_modules 구조 | 플랫(hoisting) - 모든 패키지 노출 | 심링크 기반 - 직접 의존성만 노출 |
| 유령 의존성 | package.json에 없어도 접근 가능 | 엄격하게 차단 |
~/.pnpm-store)에 보관합니다. 새 버전이 나와도 변경된 파일만 추가 저장하므로, 100개 파일 중 1개만 바뀌면 1개만 새로 저장합니다.사전 요구사항
pnpm을 설치하기 전에 확인할 사항입니다:
- Node.js 18.12 이상 (독립 스크립트 설치 시에는 Node.js 없이도 가능)
- pnpm 10 기준 Node.js 18+ 또는 20+ 권장
| pnpm 버전 | Node 16 | Node 18 | Node 20+ |
|---|---|---|---|
| pnpm 8 | 지원 | 지원 | 지원 |
| pnpm 9 | 미지원 | 지원 | 지원 |
| pnpm 10 | 미지원 | 지원 | 지원 |
Windows 설치 방법
방법 1: winget (권장)
winget install -e --id pnpm.pnpm방법 2: PowerShell 독립 스크립트
Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression방법 3: Scoop
scoop install nodejs-lts pnpm방법 4: Chocolatey
choco install pnpm방법 5: npm (Node.js 설치 후)
npm install -g pnpm@latest-10Windows Defender 성능 최적화 (선택)
Microsoft Defender가 패키지 설치 속도를 크게 저하시킬 수 있습니다. 관리자 PowerShell에서 pnpm 저장소를 제외 폴더로 추가하면 해결됩니다:
# 관리자 권한 PowerShell에서 실행
Add-MpPreference -ExclusionPath "$env:LOCALAPPDATA\pnpm-store"Ubuntu(Linux) 설치 방법
방법 1: curl 독립 스크립트 (권장, Node.js 없이 가능)
curl -fsSL https://get.pnpm.io/install.sh | sh -설치 후 셸을 재시작하거나 source ~/.bashrc를 실행합니다.
방법 2: wget 사용
wget -qO- https://get.pnpm.io/install.sh | sh -방법 3: 특정 버전 설치
curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=10.0.0 sh -방법 4: Corepack (Node.js 16.13+ 설치 후)
# Corepack 업데이트
npm install --global corepack@latest
# pnpm 활성화
corepack enable pnpm방법 5: npm (Node.js 설치 후)
npm install -g pnpm@latest-10macOS 설치 방법
방법 1: Homebrew (권장)
brew install pnpm방법 2: curl 독립 스크립트
curl -fsSL https://get.pnpm.io/install.sh | sh -방법 3: Corepack
npm install --global corepack@latest
corepack enable pnpm방법 4: npm
npm install -g pnpm@latest-10방법 5: Volta
volta install pnpm설치 확인 및 기본 사용법
설치가 완료되면 버전을 확인합니다:
pnpm --version자주 쓰는 명령어 비교
| 작업 | npm | pnpm |
|---|---|---|
| 의존성 설치 | npm install | pnpm install |
| 패키지 추가 | npm install express | pnpm add express |
| 개발 의존성 추가 | npm install -D jest | pnpm add -D jest |
| 패키지 제거 | npm uninstall express | pnpm remove express |
| 스크립트 실행 | npm run build | pnpm build |
| 글로벌 설치 | npm install -g pkg | pnpm add -g pkg |
| pnpm 업데이트 | - | pnpm self-update |
셸 별칭 설정 (선택)
매번 pnpm을 타이핑하기 번거롭다면 별칭을 설정합니다:
# ~/.bashrc 또는 ~/.zshrc에 추가
alias pn=pnpm프로젝트에 pnpm 고정하기
팀 프로젝트에서 모든 팀원이 동일한 패키지 매니저를 사용하도록 강제하려면 Corepack을 활용합니다:
# 프로젝트에 pnpm 버전 고정
corepack use pnpm@latest-10이 명령은 package.json에 "packageManager": "pnpm@10.x.x" 필드를 추가합니다. 이후 다른 팀원이 npm이나 yarn으로 설치를 시도하면 경고가 표시됩니다.
트러블슈팅
| 증상 | 해결 방법 |
|---|---|
| pnpm 명령어를 찾을 수 없음 | 셸 재시작 또는 source ~/.bashrc. PATH 확인: which pnpm (macOS/Linux) 또는 where.exe pnpm.* (Windows) |
| Windows Defender 차단 | npm 또는 Corepack 방식으로 재설치 |
| 설치가 느림 (Windows) | pnpm-store 폴더를 Defender 제외 목록에 추가 |
| 권한 오류 (Linux/macOS) | sudo 없이 설치. 독립 스크립트는 사용자 디렉터리에 설치됨 |
| pnpm이 완전히 깨짐 | 기존 pnpm 파일 삭제 후 재설치: rm $(which pnpm) → 재설치 |
핵심 정리
- pnpm은 디스크 절약 + 빠른 설치 + 엄격한 의존성 관리를 제공하는 Node.js 패키지 매니저
- Windows: winget, Scoop, Chocolatey, npm 중 택 1 (winget 권장)
- Ubuntu/Linux: curl 독립 스크립트 권장 (Node.js 없이 가능)
- macOS: Homebrew 권장 (
brew install pnpm) - 모든 OS 공통: Corepack(
corepack enable pnpm) 또는 npm(npm install -g pnpm)도 가능 pnpm self-update로 간편 업데이트- 팀 프로젝트에는
corepack use pnpm@latest-10으로 버전 고정 권장
참조 링크
- pnpm 공식 설치 가이드모든 OS별 설치 방법, Node.js 호환성 표
- pnpm 탄생 배경 (Motivation)디스크 절약, 설치 속도, non-flat node_modules 구조 설명
- pnpm GitHub 저장소소스 코드, 이슈 트래커, 릴리스 노트

댓글 0개
등록된 댓글이 없습니다.