本文へスキップ
MameTechNews
バックエンド

pnpm、発行先と違うレジストリへCIトークンを送らないよう変更

## POINTS

  • NPM_ID_TOKENはaudが公開先レジストリと一致するときだけ使う。不一致は警告して、設定済みの資格情報へ戻る。
  • 11系は11.28.6(10月15日)、12系は12.12.1(10月11日)以降にこの確認が入っている。
  • 複数レジストリへ公開するCIは、トークンを捨てたあとにどの認証でpublishが通るかを一度確認する。

pnpmのリリース一覧は、11.28.6を2026年10月15日、同じ確認を含む12.12.1を10月11日としている。11.28.6の説明は、発行されていないレジストリへCIのアイデンティティトークンを送らないようにした、というものだ。

pnpm publishは、環境変数NPM_ID_TOKENのaudが公開先と一致するときだけ、そのトークンを使う。例としてnpm公式レジストリならnpm:registry.npmjs.orgである。一致しなければ警告してスキップし、設定してある資格情報へ戻る。12.12.1はこれに加え、dist-tagへOIDC認証を足している。

複数のレジストリを設定で切り分けている公開ジョブでは、CIが渡すトークンが常にnpmjs.org向けとは限らない。修正前は、そのトークンが選択中の別レジストリへのリクエストに載り得た。修正後は不一致のトークンを捨てるので、公開の成否がフォールバックの資格情報に依存するように変わる。トークンが無いと失敗するジョブは、どのレジストリ用の認証が残っているかを一度流して確認する。

11.28.6には、任意のpeerとしても宣言された依存がインストールから落ちる不具合の修正など、解決まわりの修正もまとめて入っている。セキュリティ目的で上げる場合も、ロックファイルとインストール結果の差分は見ておく。