pnpm 11.10 がリリースされた。レジストリ認証を URL キー付きの構造化値 _auth で渡せるようになり、認証情報は環境変数 pnpm_config__auth またはグローバル config.yaml からのみ有効になる。リポジトリ内の pnpm-workspace.yaml.npmrc からは無視されるため、プロジェクト設定でトークンを別ホストへ向け直す経路を塞ぐ。従来の pnpm_config_//host/:_authToken=… 形式は GitHub Actions や bash / zsh が /:. を含む環境変数名を落とすため壊れやすく、普通の名前の _auth がその代替になる。

CI 向けの例は次のとおり。

sh
export pnpm_config__auth='{"https://registry.npmjs.org":{"@":{"authToken":"npm-token"},"@org":{"authToken":"org-token"}}}'

グローバル config.yaml では次の形になる。

yaml
_auth:
  https://registry.npmjs.org:
    "@":
      authToken: npm-token
    "@org":
      authToken: org-token

各レジストリ URL 内で @ はレジストリ全体、@org はそのスコープ向けの認証を表す。受け付ける資格情報フィールドは authToken のみである。

主な変更は次のとおり。

  • pnpm self-update next-12 で Rust 移植の pnpm v12(next-12 dist-tag)を導入できる。ネイティブバイナリを直接リンクし、Node.js ランチャー起動コストを払わない。
  • pnpm deploy --force はワークスペースルートや親ディレクトリなど危険な出力先を拒否する。
  • pnpm pack-app はプロジェクト外へ逃げる --entry / --output-dir を拒否し、macOS の codesign / ldid もプロジェクト外から解決する。
  • pnpr 経由の解決では上流レジストリ資格情報を転送しなくなった。
  • 依存名 __proto__ による preferred versions のプロトタイプ汚染を塞いだ。
  • pnpm up が無関係なパッケージを上げてしまう問題を修正し、オフライン解決や省略メタデータを無視するレジストリ向けのキャッシュも改善した。

#参考文献