結論
以下のコマンドを入力すればエラーが出なくなる。
pnpm config set -g --json minimumReleaseAgeExclude '["@pnpm/exe", "@pnpm/linux-x64", "@pnpm/linux-arm64", "@pnpm/macos-x64", "@pnpm/macos-arm64", "@pnpm/win-arm64", "@pnpm/win-x64", "@pnpm/linuxstatic-arm64", "@pnpm/linuxstatic-x64"]'
※2026-05-08更新:コマンドを pnpm v11 に対応。
pnpm v10時代の情報
pnpm config set -g --json minimumReleaseAgeExclude '["@pnpm/exe", "@pnpm/linux-x64", "@pnpm/linux-arm64", "@pnpm/macos-x64", "@pnpm/macos-arm64", "@pnpm/win-arm64", "@pnpm/win-x64"]'
self-update と minimumReleaseAge
pnpmのminimumReleaseAgeを使えばサプライチェーン攻撃防止に繋がる。
ただこのコマンドの困ったところは、pnpm self-updateコマンド(pnpm自身をアップデートするコマンド)も止めてしまうのだ。
Nothing to stop. No server is running for the store at /home/shine/.local/share/pnpm/store/v10
ERR_PNPM_NO_MATURE_MATCHING_VERSION Version 10.32.1 (released 2 days ago) of @pnpm/exe does not meet the minimumReleaseAge constraint
This error happened while installing a direct dependency of /home/shine/.local/share/pnpm/.tools/@pnpm+exe/10.32.1_tmp_8287
The latest release of @pnpm/exe is "10.32.1". Published at 3/11/2026
pnpm update --latestみたいなコマンドであればインストール可能な範囲の最新バージョンを探してくれるのだが、self-updateにそんな機能はない。
なのでバージョンアップを止められないようにする為に対策を講じる必要があった。
具体的には以下のいずれかの対応が必要。
-
minimumReleaseAgeExcludeを全体(global)に設定してpnpm関係のパッケージをインストール制限から除外する
- この記事で行った対策はこれ
-
pnpm self-update <バージョン>でインストールできそうなバージョンを上から1つずつ試す- これを自動化するスクリプトも作ろうと思えば作れるかもしれない
上記解決策の問題点
- pnpmのパッケージ自身に悪意のあるコードがあった場合、真っ先に被害に遭う可能性がある