pnpm 12 は pnpm 11 からの機械的な移植ではなく、Rust による書き直し。npm の latest はなお 11 系を指すため、導入は next-12 タグから行う。

sh
pnpm self-update next-12

破壊的変更の要点:

  • GitHub / GitLab / Bitbucket 向けの Git 依存はホストの正規 HTTPS URL に寄せ、lockfile に SSH URL を残さない。私有リポジトリで SSH が必要なら gitinsteadOf で書き換える
  • pnpm-workspace.yaml の未認識キーは報告される。実行中の pnpm がプロジェクトのピンを満たすときは ERR_PNPM_UNRECOGNIZED_WORKSPACE_SETTINGS で失敗し、それ以外は警告
  • 循環依存の peer 解決が決定的になり、再解決後の lockfile がバイト一致しやすい。--frozen-lockfile は既存 lockfile をそのまま読む
  • Linux の packageImportMethod: auto は hardlink を先に試す(macOS は従来どおり clone 優先)
  • engineStrict は、optional 配下でも通常の dependencies 経由で到達した非互換パッケージで失敗する

主な追加:

  • globalShims によるプロジェクト連動の global bin(既定で node / deno / bun
  • npm / Yarn / Bun など他パッケージマネージャの取得と pnxpnpm shim add
  • レジストリ revision(同一版の置換成果物を digest で記録)
  • pnpm init が最新リリース版をピンする挙動、pnpm stage approve の一括承認、audit.ignorePrune
  • sudo 下での global 変更系コマンド拒否(ERR_PNPM_SUDO_NOT_SUPPORTED

#参考文献