pnpm 11.9
pnpm 11.9 がリリースされた。オンデマンドで tarball を生成するレジストリでは、メタデータに integrity が無い場合でもダウンロードした tarball から checksum を計算し lockfile に保存する。--lockfile-only でも必要に応じて tarball を取得して integrity を埋める。integrity が欠けた lockfile エントリは ERR_PNPM_MISSING_TARBALL_INTEGRITY で検証に失敗し、黙って再取得はしない。
pnpm sbom は --exclude-peers を追加した。auto-install-peers 有効時に peer が lockfile 上は通常依存と区別しにくいため、peer と peer 経由だけに到達する推移部分木を SBOM から除ける。CycloneDX 1.7 には consumer 提供 peer を表す関係が無いため、除外が仕様上の扱いになる。フラグ名は pnpm list --exclude-peers と揃え、SBOM 側は peer 専用の部分木まで落とす点でより厳しい。
主な変更は次のとおり。
- 循環を含む lockfile で
pnpm auditが遅くなる退行を修正し、到達可能性を Tarjan の強連結成分で一度だけ計算する。パス走査の再帰もやめ、時間・メモリをグラフサイズに比例させた。 - peer 解決の非決定論を修正し、同一グラフでも optional な推移 peer の有無がインストール順で変わり lockfile が揺れる事象を抑えた。
pnpm dedupe --checkの間欠失敗にもつながっていた。 minimumReleaseAgeExcludeとtrustPolicyExcludeで、同一パッケージの複数 exact-version 行を||連結 1 行と同等に扱う。pnpm audit --fixもaxios@0.18.1 || 0.21.1のような結合エントリを 1 件ずつ書く。- 大規模 monorepo で exact-version のメタデータをメモリキャッシュし、同一パッケージの繰り返し解決時のディスク読み込みを減らした。キャッシュキーにレジストリも含め、同名パッケージの取り違えを防ぐ。
- pnpr リゾルバのエンドポイントを
POST /-/pnpr/v0/resolveとPOST /-/pnpr/v0/verify-lockfileに移した。 @pnpm/resolving.tarball-urlを追加し、pnpmfile のカスタム resolver が proxy の非正規 tarball URL を正規レジストリ URL へ書き換え、lockfile にホスト固有 URL を残さないようにできる。- Windows の
pnpm dlxでキャッシュパス短縮、EBUSYが元エラーを隠す問題、非リトライ可能なSELF_SIGNED_CERT_IN_CHAIN等でのハングを修正した。
peer を除いた SBOM を出す例は次のとおり。
bash
pnpm sbom --exclude-peerspnpm audit --fix が書く minimumReleaseAgeExclude の形式例は次のとおり。
yaml
# pnpm-workspace.yaml
minimumReleaseAgeExclude:
- axios@0.18.1 || 0.21.1