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

2026년 3월 31일
조회수 11
코멘트0

목차

프로젝트가 늘어날수록 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은 모든 패키지 파일을 하나의 글로벌 저장소(~/.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
주의: Windows Defender가 실행 파일을 차단할 수 있습니다. 이 경우 npm 또는 Corepack 방식을 권장합니다.

방법 3: Scoop

scoop install nodejs-lts pnpm

방법 4: Chocolatey

choco install pnpm

방법 5: npm (Node.js 설치 후)

npm install -g pnpm@latest-10

Windows 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-10

macOS 설치 방법

방법 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 installpnpm install
패키지 추가 npm install expresspnpm add express
개발 의존성 추가 npm install -D jestpnpm add -D jest
패키지 제거 npm uninstall expresspnpm remove express
스크립트 실행 npm run buildpnpm build
글로벌 설치 npm install -g pkgpnpm 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으로 버전 고정 권장

참조 링크

댓글 0