npmと同様に使えるパッケージマネージャー
pnpm 11.minimumReleaseAgeは、デフォルトで1日になった。下位の依存パッケージでgitやtarballなどの特殊なプロトコルを使う指定をブロックするblockExoticSubdeps、未承認のビルドスクリプトをインストール失敗として扱うstrictDepBuildsも、デフォルトで有効になる。
動作要件も変わり、pnpm 11.
pnpmの公式Xアカウントは同日、公開時点ではnpmのlatestタグが引き続きv10系を指しており、v11系を導入する場合はpnpm self-update latest-11を使うよう案内している。
pnpm v11.
— pnpm (@pnpmjs) April 28, 20260.0 is released!
The "latest" dist-tag still points to v10, so install it via "pnpm self-update latest-11"https://t. co/ t60Pxl2IwF
設定はpnpm-workspace.yaml へ移行
設定ファイルの扱いも大きく見直された。.npmrcから読み取る設定は認証情報とレジストリ関連に限定される。pnpm固有の設定は、プロジェクトではpnpm-workspace.、グローバルでは新しい~/.config/に移す必要がある。
package.内のpnpmフィールドは設定として読まれなくなる。環境変数も、npm_ではなくpnpm_を使う。CI設定、Dockerfile、シェルプロファイルなどでpnpm向け設定を渡している場合は、移行時に見直す必要がある。
依存パッケージのビルド可否を制御する設定も整理された。onlyBuiltDependencies、neverBuiltDependencies、ignoredBuiltDependencies、ignoreDepScriptsなどは削除され、新しいallowBuildsに統合される。
ストアとグローバルインストールを刷新
ストアのインデックスは、これまでの多数のJSONファイル中心の構成から、$STORE/の単一SQLiteデータベースで管理する方式に刷新された。値はMessagePackで格納し、パッケージのマニフェスト情報もインデックス内に保持することで、ファイル読み込みやCAS内のpackage.参照を減らす。
グローバルインストールでは、pnpm add -g <pkg>で導入したパッケージが{pnpmHomeDir}/global/以下の独立したディレクトリに配置される。各インストールは専用のpackage.、node_、ロックファイルを持つため、グローバルツール同士のpeer dependencyやhoistの違いによる干渉を避けやすくなる。グローバルにインストールされたバイナリはPNPM_に配置される。
依存関係を{storeDir}/links/以下のグローバル仮想ストアからリンクする方式も標準となり、公式ブログでは、ビルドを伴わないパッケージの多くがNode.
公開関連コマンドをネイティブ実装に
これまでnpm CLIへ委譲していた公開関連コマンドは、pnpmのネイティブ実装に置き換えられた。対象にはpublish、view、login、logout、deprecate、unpublish、dist-tag、versionなどが含まれる。
新コマンドとしては、クリーンインストール用のpnpm ci、ワークスペース内のnode_を削除するpnpm clean、CycloneDX 1.pnpm sbomが追加された。peer dependencyの問題を確認するpnpm peers check、これまでのpnpm env useの後継となるpnpm runtime setも利用できる。
CLI関連では、指定したpnpmバージョンで1回だけ実行するpnpm with <version>も導入された。あわせて、pnpmのpn、pnpm dlxのpnx、--filterの-Fといった短縮エイリアスも追加されている。
pnpm auditは、npmレジストリから脆弱性情報をまとめて取得する方式に変わった。CVEベースの無視設定はGHSAベースへ移行し、設定名はauditConfig.からauditConfig.へ変更される。
移行にはcodemodを用意
v10からv11への移行では、公式移行ガイドでcodemodの利用が案内されている。pnpx codemod run pnpm-v10-to-v11を実行すると、設定のpnpm-workspace.への移動や.npmrcの分割、ビルド設定のallowBuildsへの統合、pmOnFailへの置き換えなどをまとめて適用できる。
ただし、CVE IDのGHSA IDへの変換やnpm_環境変数、pnpm link、削除されたpnpm serverへの対応などは、プロジェクトやCIの構成に応じて確認が必要になる。