설치하기
필수 구성 요소#
독립 실행형 스크립트나 @pnpm/exe로 pnpm을 설치하지 않는다면, 시스템에 Node.js(v22 이상)가 설치되어 있어야 합니다.
정보
pnpm 12를 찾고 계신가요? 현재 릴리스 후보이며, pnpm 11과는 설치 방법이 다릅니다. pnpm 12 RC 설치하기를 참고하세요.
스크립트로 설치하기#
Node.js가 설치되어 있지 않더라도 다음 명령어를 통해 pnpm을 설치할 수 있습니다.
윈도우#
경고
이 방식으로 pnpm 설치 시 가끔 Windows Defender에서 실행 파일을 차단할 수 있습니다.
이 문제로 인해 현재 Windows에서는 npm을 사용하여 pnpm을 설치하는 것을 권장합니다.
Powershell:
Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression
Windows에서는 Microsoft Defender 때문에 패키지 설치가 크게 느려질 수 있습니다. PowerShell을 관리자 권한으로 실행한 뒤 다음 명령어를 실행하여 pnpm을 Microsoft Defender의 제외 폴더 목록에 추가할 수 있습니다:
Add-MpPreference -ExclusionPath $(pnpm store path)
POSIX systems#
Intel macOS에서는 pnpm 11이 지원되지 않음
Intel Mac(darwin-x64)에서는 pnpm 11의 독립 실행형 스크립트가 실행되지 않습니다. Homebrew를 사용하거나, Intel 빌드를 제공하는 pnpm 12를 설치하세요. 자세한 내용은 #11423을 참고하세요.
pnpm 12에는 Intel macOS용 빌드가 다시 포함되므로 이 제한은 적용되지 않습니다.
curl -fsSL https://get.pnpm.io/install.sh | sh -
curl이 설치되어 있지 않은 경우에는 wget을 사용할 수 있습니다.
wget -qO- https://get.pnpm.io/install.sh | sh -
Linux 런타임 요구 사항
설치 스크립트는 시스템의 libc에 따라 glibc 빌드 또는 musl 빌드를 선택하며, Alpine을 비롯한 musl 기반 배포판을 위해 별도의 musl 빌드를 제공합니다. 이 glibc 빌드에는 glibc 2.27 이상과 libatomic.so.1이 필요합니다 — 둘 다 대부분의 전체 배포판에는 있지만 최소한의 컨테이너 이미지에는 없을 수 있습니다. error while loading shared libraries: libatomic.so.1이 표시되면 배포판의 패키지 관리자로 설치하세요:
- Debian/Ubuntu:
apt-get install -y libatomic1 - Fedora/RHEL:
dnf install -y libatomic
팁
그런 다음 pnpm runtime 명령을 사용하여 Node.js를 설치할 수 있습니다.
Docker 컨테이너에서#
# bash
wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.bashrc" SHELL="$(which bash)" bash -
# sh
wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.shrc" SHELL="$(which sh)" sh -
# dash
wget -qO- https://get.pnpm.io/install.sh | ENV="$HOME/.dashrc" SHELL="$(which dash)" dash -
특정 버전 설치하기#
설치 스크립트를 실행하기 전에, 선택적으로 환경 변수 PNPM_VERSION을 설정하여 특정 버전의 pnpm을 설치할 수 있습니다:
curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=<version> sh -
기타 패키지 관리자 사용하기#
npm 사용하기#
npx get-pnpm
Homebrew 사용하기#
패키지 매니저가 이미 설치되어 있다면 다음 명령으로 pnpm을 설치할 수 있습니다.
brew install pnpm
Winget 사용하기#
Winget이 설치되어 있으면 아래 명령어를 사용하여 pnpm을 설치할 수 있습니다:
winget install -e --id pnpm.pnpm
Scoop 사용하기#
Scoop이 설치되어 있으면 아래 명령어를 사용하여 pnpm을 설치할 수 있습니다.
scoop install nodejs-lts pnpm
Choco 사용하기#
Chocolatey가 설치되어 있으면 아래 명령어를 사용하여 pnpm을 설치할 수 있습니다:
choco install pnpm
팁
pnpm을 CI 서버에서 사용하고 싶나요? 참조: 연속 통합.
pnpm 12 RC 설치하기#
경고
pnpm 12는 Rust로 다시 작성된 pnpm이며 현재 릴리스 후보입니다. 발생하는 문제가 있다면 문제를 보고해 주세요.
몇 가지 차이점을 제외하면 pnpm 12는 pnpm 11의 사용 방식을 바꾸지 않으므로, 이 문서의 나머지 내용은 두 버전 모두에 적용됩니다 — pnpm 12의 달라진 점을 참고하세요. 단, v12가 릴리스 후보인 동안에는 설치 방법만 다릅니다: npm에서는 next-12 태그로, GitHub에서는 프리릴리스로 게시되므로 Homebrew, winget, Scoop, Chocolatey에서는 아직 제공되지 않습니다.
설치된 pnpm 사용하기#
이미 pnpm v11.10.0 이상을 쓰고 있다면 이 방법으로 전환하는 것이 가장 쉽습니다.
pnpm self-update next-12
pnpm이 네이티브 바이너리를 직접 링크하므로 그 밖에 필요한 작업은 없습니다. 참고로 packageManager 필드를 통해 pnpm을 고정한 프로젝트 내부에서는 self-update가 pnpm을 전역으로 설치하는 대신 해당 고정 버전만 업데이트합니다.
패키지 관리자 npm 사용하기#
아직 pnpm이 설치되어 있지 않다면 다음과 같이 합니다.
npx get-pnpm next-12
이 설치 스크립트를 실행하려면 Node.js 22.13 이상이 필요하지만, 설치 후 pnpm을 실행할 때는 필요하지 않습니다. pnpm 12는 네이티브 바이너리입니다.
독립 실행형 스크립트 사용하기#
PNPM_VERSION을 next-12 또는 정확한 버전으로 설정하세요.
POSIX 시스템에서:
curl -fsSL https://get.pnpm.io/install.sh | env PNPM_VERSION=next-12 sh -
Windows에서는 PowerShell을 사용합니다.
$env:PNPM_VERSION="next-12"; Invoke-WebRequest https://get.pnpm.io/install.ps1 -UseBasicParsing | Invoke-Expression
이렇게 하면 Node.js 없이 pnpm이 설치되며, pnpm 11과 달리 Intel macOS에서도 동작합니다.
호환성#
Node.js 버전에 호환되는 pnpm 버전 목록입니다.
| Node.js | pnpm 8 | pnpm 9 | pnpm 10 | pnpm 11 | pnpm 12 |
|---|---|---|---|---|---|
| Node.js 14 | ❌ | ❌ | ❌ | ❌ | ❌ |
| Node.js 16 | ✔️ | ❌ | ❌ | ❌ | ❌ |
| Node.js 18 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Node.js 20 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
| Node.js 22 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Node.js 24 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
| Node.js 26 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
pnpm 12는 npm으로 설치할 때만 Node.js가 필요합니다. 독립 실행 스크립트로 설치한 버전은 Node.js 없이 실행됩니다.
문제 해결 안내#
만약 pnpm이 손상되어 다시 설치해도 문제를 해결할 수 없는 경우 PATH에서 수동으로 제거해야 할 수도 있습니다.
pnpm install 실행 시 다음과 같은 오류가 발생했다고 가정해 보겠습니다:
C:\src>pnpm install
internal/modules/cjs/loader.js:883
throw err;
^
Error: Cannot find module 'C:\Users\Bence\AppData\Roaming\npm\pnpm-global\4\node_modules\pnpm\bin\pnpm.js'
←[90m at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)←[39m
←[90m at Function.Module._load (internal/modules/cjs/loader.js:725:27)←[39m
←[90m at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)←[39m
←[90m at internal/main/run_main_module.js:17:47←[39m {
code: ←[32m'MODULE_NOT_FOUND'←[39m,
requireStack: []
}
먼저, which pnpm을 실행하여 pnpm의 위치를 찾으세요. 만약 Windows를 사용하는 경우 where.exe pnpm.*을 실행하세요.
그럼 pnpm이 어디에 있는지 찾을 수 있을 겁니다. 예:
$ which pnpm
/c/Program Files/nodejs/pnpm
이제 pnpm CLI의 위치를 알았으니, 해당 폴더를 열고 pnpm과 관련된 모든 파일(pnpm.cmd, pnpx.cmd, pnpm 등)을 제거합니다.
완료된 후, pnpm을 다시 설치하면 제대로 작동할 것입니다.
pnpm 업데이트하기#
pnpm을 업데이트하려면, self-update 명령을 실행하세요:
pnpm self-update
pnpm 삭제#
시스템에서 pnpm CLI와 pnpm이 디스크에 기록한 모든 파일을 제거해야 한다면 Uninstalling pnpm을 참조하세요.