pnpm 12.15.0

This release lets pnpm-workspace.yaml delegate settings to other files and config dependencies with include, adds lockfile.integrityTarget: tar and tar-registry support, accepts zstd-compressed registry responses, and honors SOURCE_DATE_EPOCH in pnpm deploy and pnpm install. It also rejects registry metadata that names a different package than the one requested and speeds up workspace installs and macOS file linking.

pnpm 12.14.0

This release adds the sideEffectsCache.exclude setting, stops pnpm install from waiting on the daily update check, and keeps pnpm from aborting with a core dump when the reader of its output exits.

pnpm 11.28.6

This release stops pnpm publish from sending a CI identity token to a registry it was not issued for. It also fixes installs that dropped a dependency also declared as an optional peer, and accepts empty httpProxy and httpsProxy settings again.

pnpm 12.13.0

This release adds the pnpm profile and pnpm token commands, the storeIndexFormat: files setting for stores shared over a network filesystem, and faster Python dependency resolution.

pnpm 12.12.1

This release adds OIDC authentication to pnpm dist-tag and the tool: protocol. pnpm publish now checks which registry an NPM_ID_TOKEN was issued for before using it.

pnpm 12.12.0

This release shares task results and dependency builds through a remote cache, adds the addMissingPeerTypes setting, and lets pnpm add --config and pnpm update manage configuration dependencies. It also fixes dangerouslyAllowAllBuilds running the build scripts of packages that allowBuilds denies.

pnpm 12.11.2

This release fixes --workspace-concurrency=Infinity, filters set by an updateConfig hook, and store fetches with enable-modules-dir=false.

pnpm 12.11.1

This release fixes two ways pnpm install could fail, runs tools of any Rust release through pnx, and treats registry.npmjs.com as an alias of the npm registry.

pnpm 12.11.0

This release adds Rust toolchain management, links the agent skills that dependencies ship, adds the permissions setting, and keeps the colors of streamed script output.

pnpm 12.10.1

This release fixes pnpm install failures after an overrides change and on a filtered frozen install with catalogPrune. It also fixes several bugs in the experimental nodeLinker.type: loaded, which now keeps its generated files in node_modules.

pnpm 12.10.0

This release adds an experimental loaded node linker, lets pnpm-lock.yaml record resolution settings, and reads cached registry metadata faster. It also carries several security fixes, including one that stops a dependency version from writing files outside the global virtual store.

pnpm 11.28.5

This release reads cached registry metadata faster and makes pnpm config get --global ignore project settings. It also carries several security fixes for package archives, git dependencies, and config dependencies.

pnpm 12.9.1

This release moves the WebContainer build into a separate @pnpm/wasm package, shrinks the pnpm package back to about 4 MB, and fixes pnpm publish with provenance from GitLab CI.

pnpm 11.28.4

pnpm 11.28.4 fixes two ways credentials could leak, makes pnpm install --frozen-lockfile accept several lockfiles it rejected, warns when an optional dependency cannot be fetched, and stops pnpm self-update from installing a second pnpm next to a Homebrew one.

pnpm 12.9.0

This release runs pnpm in StackBlitz WebContainers, adds a per-registry networkConcurrency setting, and records every installed project in the store. It also carries a security fix for pnpm login.

pnpm 12.8.2

pnpm 12.8.2 fixes a startup crash on Linux ppc64le and UnknownIssuer errors on systems without CA certificates. pnpm run no longer installs before every script on CI when autoDedupe is enabled, and resolution and hoisted installs on macOS are faster.

pnpm 12.8

pnpm 12.8 warns when pnpm pack or pnpm publish would ship a .env file, installs sharedWorkspaceLockfile: false workspaces concurrently, applies every setting passed as --config.<name>=<value>, and no longer leaves the Windows terminal stuck after Ctrl+C in a script. This release also carries a long list of bug fixes.

pnpm 12.7

pnpm 12.7 lets the global node shim follow .nvmrc and .node-version, adds pnpm install --allow-build and pnpm publish --publish-wait-timeout, and creates pnpm-workspace.yaml from the workspaces field of package.json. pnpm install --force no longer installs optional dependencies built for other platforms. This release also carries security fixes and a long list of bug fixes.

pnpm 11.28

pnpm 11.28 adds the forceIgnoresPlatform setting and pnpm update --peer, and brings a large batch of fixes from pnpm 12 to the JavaScript CLI: pnpm deploy, --filter, nodeLinker: hoisted, and custom modulesDir setups all behave better. It also carries security fixes for shell completion, bin shims on Nix, lifecycle scripts inside a custom modulesDir, and userAgent placeholders in pnpm-workspace.yaml.

pnpm 12.6

pnpm 12.6 ships with automatic dependency deduplication, relocatable node_modules, --save-types for installing @types/* packages alongside their counterparts, package.yaml manifest editing, and file: / link: protocols in catalogs.

pnpm 12.5

pnpm 12.5 expands Python support with editable project packages, shared workspace environments, automatic interpreter downloads, and lockfiles for multiple platforms and Python versions. It also accepts Package URLs in pnpm add, adds machine-wide task concurrency groups, and cleans up obsolete registry metadata with pnpm cache prune.

pnpm 12.4

pnpm 12.4 installs crates and Python packages next to npm packages in the same workspace, adds pnpm pipeline to run a workspace's tasks the way a CI job would, and ships binaries for six more platforms. pnpr 0.1.0-alpha.11, released alongside 12.4.1, serves Cargo, Python, and container registries beside npm, publishes across all of them in one transaction, and signs users in through OIDC.

pnpm 11.26

pnpm 11.26 brings the JavaScript CLI level with what pnpm 12 gained over the past two weeks: workspace: ranges in catalogs, the supply-chain flags on remove and update, pnpm change check for CI, and pnpm deploy without injected dependencies.

pnpm 12.2-12.3

pnpm 12.2 and 12.3 are largely a catch-up pair: a long list of things pnpm 11 did that the Rust CLI did not, put back. Catalogs learned the workspace: protocol, pnpm remove and pnpm update gained the supply-chain flags, every project-aware global command became a real executable, and hostname resolution went back to the system resolver on Linux and Windows. Large workspaces install noticeably faster.

pnpm 12.1

pnpm 12.1 brings the new workspace task scheduler to the Rust CLI, persists successful recursive tasks for precise retries, expands shared build artifacts to macOS and Windows, and moves login credentials into pnpm's structured global configuration. pnpr 0.1.0-alpha.9, released with it, makes the artifact tier independent and horizontally scalable through S3-compatible storage.

pnpm 11.25

pnpm 11.25 replaces topological batches with a task scheduler, adds configurable workspace task dependencies and per-task concurrency, and makes interrupted recursive runs resumable from the work that actually passed. It also introduces registry revisions, signed build artifacts shared through pnpr, batch approval for staged packages, automatic pruning of stale audit exceptions, and a pnpm init pin that follows the latest released pnpm.

pnpm 12.0

pnpm 12 is stable. It is a rewrite of pnpm in Rust. Upgrading should not feel like a migration. The documentation now defaults to pnpm 12, with the pnpm 11 documentation available from the version selector.

The few things that behave differently are listed in What's different in pnpm 12. This post covers what is new.

pnpm 11.24

pnpm 11.24 brings back pnpm approve-builds --global, which isolated global installs took away in v11.0, and makes recursive batch publishing group its packages by registry so a credential mismatch is caught before anything is published. It also stops --frozen-lockfile from failing over the pnpm version the lockfile pins.

pnpm 11.23

pnpm 11.23 gives the registries setting a shape that describes each registry once — its tarball layout, the scopes routed to it, the prefix it answers to — so an Artifactory or GitLab registry can finally keep its tarball URLs out of pnpm-lock.yaml. It adds virtualStoreType, makes undeclared imports resolve under ESM with the global virtual store without a plugin, teaches pnpm config get to report the settings pnpm actually acts on, and warns about settings no pnpm version recognizes.

pnpm 11.21-11.22

pnpm 11.21과 11.22에서는 pnpm install이 대부분의 일상적인 변경에 대해 전체 종속성 그래프를 다시 해석하는 대신 lockfile을 제자리에서 업데이트하도록 하고, CI에서 설치를 깨뜨리는 SSH URL을 더 이상 기록하지 않으며, 전역 설치가 원자적으로 전환되고 전역 대화형 업데이트가 설치 그룹 전체를 선택하도록 하고, pnpm cache path를 추가하며, 프로젝트가 pnpm-workspace.yaml을 통해 pnpm의 머신 수준 상태를 옮기는 기능을 제거합니다.

새로운 pnpm 12에서 달라진 점

pnpm 12는 pnpm을 Rust로 다시 작성한 것으로, 현재 릴리스 후보 단계입니다. 업그레이드는 마이그레이션을 의미하지 않습니다. 아래의 차이점을 제외하면 pnpm 11의 명령, 플래그, 설정, lockfile 형식을 그대로 유지하며, 문서는 두 버전 모두에 적용됩니다.

다섯 가지가 다르며, 그중 하나인 제거된 플래그는 다르게 동작하는 것이 아니라 아예 실패합니다. 이 글에서는 이를 한곳에 모았습니다.

pnpm 11.20

pnpm 11.20에서는 둘 이상의 레지스트리에서 설치하는 프로젝트의 패키지 대체 위험을 수정합니다. 이제 이름 있는 레지스트리에서 해석된 패키지는 lockfile에 레지스트리로 한정된 키로 기록됩니다. 또한 기본 제공 npmjs: 별칭을 추가하고, 빈 프록시 설정으로 설치가 실패하지 않도록 하며, 악의적인 lockfile에 대해 pnpm rebuild를 강화하고, 종속성 해석 속도를 높입니다.

pnpm 11.15-11.19

pnpm 11.15부터 11.19까지는 pnpm update와 pnpm outdated가 GitHub Actions를 업데이트할 수 있게 하고, pnpm update가 수행한 버전 올림에 대한 changeset을 작성하게 하며, 더 깔끔한 update 및 audit 설정 섹션을 도입하고, 다른 이름으로 패키지를 게시하기 위한 publishConfig.name을 추가하며, 프로젝트가 제공하는 구성으로부터 pnpm self-update를 보호하고, TTY 없이도 웹 기반 로그인이 동작하게 하며, =를 save-prefix로 허용합니다. 또한 대규모 워크스페이스에서 해석 시 최대 메모리 사용량을 몇 배 줄이고, 호환 가능한 종속성 변경 후 반복 설치 속도를 높입니다.

pnpm 11.11-11.14

pnpm 11.11부터 11.14까지는 네이티브 워크스페이스 릴리스 관리(pnpm change, pnpm lane, 인수 없는 pnpm version -r), 설치 상태를 처음부터 끝까지 진단하는 pnpm doctor 명령, 레지스트리에서 패키지와 조직을 관리하는 pnpm access 및 pnpm team 명령, 수렴 overrides, 스킴을 포함하는 peerDependencies 지정자를 추가합니다. 또한 경로 탐색 취약점을 수정하고, 콜드 캐시 해석 중 최대 메모리 사용량을 약 30% 줄이며, 피어 종속성 교착 상태를 해결합니다.

pnpm 11.10

pnpm 11.10은 CI 친화적인 레지스트리 인증을 위한 _auth 설정, 새로운 pnpm prefix 및 pnpm issues 명령, 그리고 pnpm self-update로 pnpm v12 (Rust 포트)를 설치하는 기능을 추가합니다. 또한 pnpm up의 정확도를 개선하고, 축약 메타데이터를 무시하는 레지스트리에 대한 해석 속도를 높이며, 전역 패키지 관리, pnpm deploy, pnpm pack-app을 강화합니다.

pnpm 11.9

pnpm 11.9에서는 체크섬을 게시할 수 없는 레지스트리에 대해 누락된 tarball integrity를 계산하고, pnpm sbom --exclude-peers를 추가하며, 순환 lockfile에서 감사 성능을 개선하고, 피어 해석의 비결정성을 수정하며, minimumReleaseAge 및 trustPolicy의 제외 처리를 강화합니다.

pnpm 11.8

pnpm 11.8에서는 설치 시험 실행 미리보기, Node.js 패키지 맵 생성, 더 풍부한 SBOM 출력, 현재 패키지를 기본값으로 사용하는 pnpm view, 그리고 올바른 pnpm run --no-bail 종료 코드가 추가되었습니다. 또한 구성 종속성 lockfile 경로 탐색 수정과 여러 설치/업데이트 결정성 수정이 포함됩니다.

pnpm 11.7

pnpm 11.7에서는 읽기 전용 패키지 스토어를 대상으로 설치하기 위한 frozenStore 설정, 전체 워크스페이스를 하나의 요청으로 게시하는 --batch 플래그, 스코프별 인증 토큰, 그리고 pacquet에 위임되는 전체 해석 설치가 추가되었습니다. 또한 lockfile 별칭 처리를 강화하고, 여러 설치 경로를 결정적으로 만들며, 여러 게시 및 Windows 관련 수정 사항이 포함됩니다.

pnpm 11.6

pnpm 11.6에서는 npm_config_//… 및 pnpm_config_//… 환경 변수를 통해 파일 없이 레지스트리 인증을 제공하는 방법이 추가되고, 기본 네트워크 동시성이 높아지며, pnpm-lock.yaml만 없는 경우 전체 재해석을 건너뜁니다. 또한 선택적 종속성의 플랫폼 필드를 추론하여 다른 플랫폼용 바이너리가 다운로드되지 않도록 합니다.

pnpm 11.5

pnpm 11.5에서는 nodeLinker: hoisted 설치에서 종속성이 얼마나 멀리 호이스팅될지 제어하는 hoistingLimits 설정이 추가되고, 긴 선택 목록의 스크롤 문제를 해결하기 위해 대화형 프롬프트 라이브러리가 교체되며, 신뢰 등급에서 단계적 게시를 인식하고, 여러 설치 및 dist-tag 수정 사항이 포함됩니다.

pnpm 11.4

pnpm 11.4에서는 lockfile integrity, 자격 증명 범위, git 해석, 패치 파일, 종속성 별칭과 관련된 일련의 공급망 보안 허점을 해결하고, tarball integrity 불일치를 기본적으로 설치 실패로 처리하며(한정된 용도의 --update-checksums 옵트인 제공), pnpm runtime set이 기본적으로 engines.runtime 대신 devEngines.runtime에 기록하도록 변경합니다.

pnpm 11.3

pnpm 11.3에서는 npm의 단계적 게시 지원(pnpm stage), 이미 신뢰된 lockfile에 대해 공급망 검증을 건너뛰는 새로운 trustLockfile 설정, 그리고 pnpm pkg, pnpm repo, pnpm set-script의 네이티브 구현이 추가되었습니다. 또한 pack / publish용 --skip-manifest-obfuscation 플래그를 추가하고, 대규모 워크스페이스에서 minimumReleaseAge / trustPolicy 검증의 메모리 사용량을 줄였습니다.

pnpm 11.2

pnpm 11.2에서는 설치 백엔드로 pacquet(pnpm의 Rust 포팅)을 실험적으로 선택해 사용할 수 있게 되었고, 구성 종속성이 한 단계의 optionalDependencies를 설치하도록 확장되었으며(따라서 esbuild/swc의 플랫폼 바이너리 패턴이 구성 종속성에서도 작동합니다), 오랫동안 문서화되어 있던 pnpm login --scope 플래그가 연결되었고, pnpm outdated 및 pnpm update --interactive에 런타임 항목(Node.js, Deno, Bun)이 표시됩니다.

pnpm 11.1

pnpm 11.1에서는 pnpm audit signatures, pnpm bugs, pnpm owner 등 몇 가지 새로운 명령이 추가되었으며, 임의의 이름 있는 레지스트리에서 설치하는 기능(GitHub Packages npm 레지스트리용 기본 제공 별칭 포함), CI에서 런타임 설치를 건너뛰는 기능, 그리고 여러 수정 사항이 함께 제공됩니다.

pnpm 11.0

pnpm 11이 출시되었습니다! 이번 릴리스는 v10 주기 동안 도입된 보안 기본값을 강화하고, 게시를 위한 npm CLI 대체 동작을 없애고 네이티브 구현으로 바꾸며, 패키지별 JSON 스토어 인덱스를 단일 SQLite 데이터베이스로 대체하고, 전역 설치를 격리하여 더 이상 서로 간섭하지 않도록 합니다.

또한 Node.js 22 이상이 필요합니다 — 이제 pnpm 자체가 순수 ESM입니다.

버전 v10에서 업그레이드하시나요? 자세한 내용은 v10에서 v11로 마이그레이션 가이드를 참조하세요. 대부분의 구성 변경은 기계적이며 pnpm-v10-to-v11 codemod로 적용할 수 있습니다.

pnpm 10.32

pnpm 10.32는 --all 플래그를 pnpm approve-builds에 추가하여 대화형 프롬프트 없이 보류 중인 모든 빌드를 승인할 수 있게 합니다.

pnpm 10.31

pnpm 10.31은 pnpm-workspace.yaml을 업데이트할 때 주석과 서식을 보존하며, 다수의 버그 수정 사항을 포함합니다.

pnpm 10.30

pnpm 10.30에서는 pnpm why가 역방향 종속성 트리를 표시하도록 재설계되어, 패키지가 설치된 이유를 훨씬 쉽게 파악할 수 있습니다.

pnpm 10.29

pnpm 10.29는 pnpm dlx에 catalog: 프로토콜 지원을 추가하고, pnpm-workspace.yaml에서 auditLevel을 구성할 수 있게 하며, 버전 없는 workspace: 지정자를 지원하고, 여러 버그 수정 사항을 포함합니다.

pnpm 10.28

pnpm 10.28에서는 게시 시점에 package.json을 사용자 지정할 수 있는 새로운 beforePacking 훅이 도입되고, 필터링된 설치 성능이 개선되었으며, 여러 버그 수정 사항이 포함되었습니다.

pnpm 10.27

pnpm 10.27은 오래된 패키지 버전에 대한 신뢰 정책 검사를 무시하는 새 설정을 추가하고, 전역 가상 스토어 정리를 위한 프로젝트 레지스트리를 도입하며, 여러 버그 수정 사항을 포함합니다.

pnpm 10.26

pnpm 10.26은 git 호스팅 종속성에 대해 더 엄격한 보안 기본값을 도입하고, 세분화된 스크립트 권한을 위한 allowBuilds를 추가하며, 비표준 전이적 종속성을 차단하는 새 설정을 포함합니다.

pnpm 10.25

pnpm 10.25에서는 인증서 처리가 개선되고, 최소 구성의 pnpm init이 추가되었으며, 여러 편의성 수정 사항이 포함되었습니다.

pnpm 10.24

pnpm은 이제 코어 수가 많은 머신에서 네트워크 동시성을 자동으로 조정하며, 여러 안정성 수정 사항을 포함합니다.

pnpm 10.23

--lockfile-only 옵션을 pnpm list에 추가하고 pnpm self-update를 다양하게 개선했습니다.

pnpm 10.22

신뢰 정책에서 패키지를 제외하는 기능과 게시 시 engines 필드를 재정의하는 기능을 지원합니다.

pnpm 10.21

종속성을 위한 Node.js 런타임 설치 지원과 신뢰 정책을 구성하는 설정이 추가되었습니다.

pnpm 10.20

이번 릴리스에서는 모든 명령어를 출력하는 --all 플래그가 pnpm help 명령어에 추가되었습니다.

pnpm 10.19

이번 릴리스에서는 두 가지 설정, [onlyBuiltDependencies] 및 [minimumReleaseAgeExclude]에 버전 단위 제어 기능이 추가되었습니다.

pnpm 10.18

마이너 변경 사항#

메타데이터 가져오기와 tarball 다운로드를 모두 포함한 느린 네트워크 요청에 대해 경고를 표시하도록 하여 pnpm에 네트워크 성능 모니터링을 추가했습니다.

경고 임계값에 대한 설정 옵션을 추가했습니다: fetchWarnTimeoutMs 및 fetchMinSpeedKiBps. 요청이 시간 임계값을 초과하거나 최소 속도에 미치지 못하면 경고 메시지가 표시됩니다

관련 PR: #10025.

패치 변경 사항#

  • EAGAIN 오류 발생 시 파일 시스템 작업을 재시도합니다 #9959.
  • 이제 outdated 명령어가 minimumReleaseAge 설정을 따릅니다 #10030.
  • 종속 패키지를 제거할 때 cleanupUnusedCatalogs 설정을 올바르게 적용합니다.
  • 이제 scriptShell이 false로 설정된 경우에도 의미 없는 오류로 실패하지 않습니다 #8748.
  • pnpm dlx는 minimumReleaseAge가 설정되어 있을 때 실패하지 않아야 합니다 #10037.

pnpm 10.17

마이너 변경 사항#

이제 minimumReleaseAgeExclude 설정에서 패턴을 지원합니다.

pnpm 10.16

마이너 변경 사항#

종속성 업데이트 지연을 위한 새 설정#

최근 인기 패키지가 실제로 공격당한 사고가 여러 차례 있었습니다. 침해된 버전을 설치할 위험을 줄이기 위해, 새로 릴리스된 종속성의 설치를 지연시키는 새 설정을 도입합니다. 대부분의 경우 이러한 공격은 빠르게 발견되며, 악성 버전은 한 시간 이내에 레지스트리에서 제거됩니다.

pnpm 10.15

마이너 변경 사항#

카탈로그를 위한 새 설정#

cleanupUnusedCatalogs 설정을 추가했습니다. 이 설정을 true로 설정하면 pnpm이 설치 중에 사용되지 않는 카탈로그 항목을 제거합니다 #9793.

pnpm 10.14

JavaScript 런타임 설치 지원 추가#

devEngines.runtime(package.json 내부)에 Node.js, Deno 또는 Bun을 선언하면 pnpm이 자동으로 다운로드하고 고정합니다.