0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【pnpm v11対応】self-update が minimumReleaseAge に止められないようにする

0
Last updated at Posted at 2026-03-13

結論

以下のコマンドを入力すればエラーが出なくなる。

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のパッケージ自身に悪意のあるコードがあった場合、真っ先に被害に遭う可能性がある
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?