설치하기

필수 구성 요소#

독립 실행형 스크립트나 @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.jspnpm 8pnpm 9pnpm 10pnpm 11pnpm 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을 참조하세요.