pnpm 11.0リリース —⁠—新規公開の依存パッケージをデフォルトで1日後に解決対象に

npmと同様に使えるパッケージマネージャー「pnpm」のメジャーバージョンとなるpnpm 11.0が、2026年4月28日に公開された。

pnpm 11.0では、サプライチェーン保護に関わるデフォルト設定が強化された。新しく公開されたパッケージバージョンを、公開から一定時間が経過するまでインストール時の依存関係解決の対象から外すminimumReleaseAgeは、デフォルトで1日になった。下位の依存パッケージでgitやtarballなどの特殊なプロトコルを使う指定をブロックするblockExoticSubdeps、未承認のビルドスクリプトをインストール失敗として扱うstrictDepBuildsも、デフォルトで有効になる。

動作要件も変わり、pnpm 11.0はNode.js 22以上が必須となった。Node.js 18、19、20、21はサポート対象外になった。pnpm本体はpure ESMとして配布される。

pnpmの公式Xアカウントは同日、公開時点ではnpmのlatestタグが引き続きv10系を指しており、v11系を導入する場合はpnpm self-update latest-11を使うよう案内している。

設定はpnpm-workspace.yamlへ移行

設定ファイルの扱いも大きく見直された。.npmrcから読み取る設定は認証情報とレジストリ関連に限定される。pnpm固有の設定は、プロジェクトではpnpm-workspace.yaml、グローバルでは新しい~/.config/pnpm/config.yamlに移す必要がある。

package.json内のpnpmフィールドは設定として読まれなくなる。環境変数も、npm_config_*ではなくpnpm_config_*を使う。CI設定、Dockerfile、シェルプロファイルなどでpnpm向け設定を渡している場合は、移行時に見直す必要がある。

依存パッケージのビルド可否を制御する設定も整理された。onlyBuiltDependenciesneverBuiltDependenciesignoredBuiltDependenciesignoreDepScriptsなどは削除され、新しいallowBuildsに統合される。

ストアとグローバルインストールを刷新

ストアのインデックスは、これまでの多数のJSONファイル中心の構成から、$STORE/index.dbの単一SQLiteデータベースで管理する方式に刷新された。値はMessagePackで格納し、パッケージのマニフェスト情報もインデックス内に保持することで、ファイル読み込みやCAS内のpackage.json参照を減らす。

グローバルインストールでは、pnpm add -g <pkg>で導入したパッケージが{pnpmHomeDir}/global/v11/{hash}/以下の独立したディレクトリに配置される。各インストールは専用のpackage.jsonnode_modules、ロックファイルを持つため、グローバルツール同士のpeer dependencyやhoistの違いによる干渉を避けやすくなる。グローバルにインストールされたバイナリはPNPM_HOME/binに配置される。

依存関係を{storeDir}/links/以下のグローバル仮想ストアからリンクする方式も標準となり、公式ブログでは、ビルドを伴わないパッケージの多くがNode.jsのアップグレード後も再インポートなしで使えるとしている。

公開関連コマンドをネイティブ実装に

これまでnpm CLIへ委譲していた公開関連コマンドは、pnpmのネイティブ実装に置き換えられた。対象にはpublishviewloginlogoutdeprecateunpublishdist-tagversionなどが含まれる。

新コマンドとしては、クリーンインストール用のpnpm ci、ワークスペース内のnode_modulesを削除するpnpm clean、CycloneDX 1.7またはSPDX 2.3形式のSBOMを生成するpnpm sbomが追加された。peer dependencyの問題を確認するpnpm peers check、これまでのpnpm env useの後継となるpnpm runtime setも利用できる。

CLI関連では、指定したpnpmバージョンで1回だけ実行するpnpm with <version>も導入された。あわせて、pnpmpnpnpm dlxpnx--filter-Fといった短縮エイリアスも追加されている。

pnpm auditは、npmレジストリから脆弱性情報をまとめて取得する方式に変わった。CVEベースの無視設定はGHSAベースへ移行し、設定名はauditConfig.ignoreCvesからauditConfig.ignoreGhsasへ変更される。

移行にはcodemodを用意

v10からv11への移行では、公式移行ガイドでcodemodの利用が案内されている。pnpx codemod run pnpm-v10-to-v11を実行すると、設定のpnpm-workspace.yamlへの移動や.npmrcの分割、ビルド設定のallowBuildsへの統合、pmOnFailへの置き換えなどをまとめて適用できる。

ただし、CVE IDのGHSA IDへの変換やnpm_config_*環境変数、pnpm link、削除されたpnpm serverへの対応などは、プロジェクトやCIの構成に応じて確認が必要になる。

おすすめ記事

記事・ニュース一覧