期間: 2026-09-28 〜 2026-09-30 · PR 51 件(新機能 0 / 変更・修正 28 / その他 23)
この回について
取り込み期間は 2026-09-28T07:23:07Z 〜 2026-09-30T00:33:17Z。
maxPrs: 30を超えたため、詳しく確認したのは 30 件で、残り 21 件はタイトルだけの簡易情報(brief: true)として「その他」に 1 行ずつ載せている。詳しく確認した 30 件のうち、CI・ドキュメント公開ワークフローだけの修正 2 件(#16314、#16389)は「その他」に回した。期間中に安定版 v12.8.0・v12.8.1・v11.28.1・v11.28.2・v10.34.6 とプレリリース pnpr@0.1.0-alpha.14 が公開された。各 PR の収録状況は inbox の表記をそのまま書いている。
新機能
なし
変更・修正
local ディレクトリ依存のファイルが実行ビットを失う問題を修正(#16318)
Before
pnpm 12.8.0 では、
file:のディレクトリ依存や injected なワークスペースパッケージのファイルを、ストアの-exec接尾辞から実行可否を判断してコピーしていた。プロジェクトのファイルにはその接尾辞が無いため、0755のスクリプトが0644で配置されていた。
After
pnpm 11 と同じく、CAFS の配置(
files/<2 桁の 16 進>/<digest>[-exec])を持つファイルだけにストアのモードを適用し、それ以外は元のモードを保つ。
📦 v12.8.1 · トピック: インストール
インストールするものが無いプロジェクトで pnpm run/exec 前のインストールを省略(#16317)
Before
ワークスペースの状態ファイルが無いと、
pnpm run・pnpm execは必ずインストールを起動し、インストールするものが無いプロジェクトでもnode_modulesとpnpm-lock.yamlを書いていた。
After
依存(
engines.runtime/devEngines.runtimeを含む)、autoInstallPeersで取得する peer、インストール系のライフサイクルスクリプト、読み込まれる pnpmfile のどれも無ければ「最新」とみなし、インストールせずに実行する。
📦 v12.8.1 · トピック: タスク実行・並行処理
ハッシュ化された peer 接尾辞で pnpm dedupe が収束しない問題を修正(#16335)
Before
peer 接尾辞が長くハッシュ化されたパッケージでは、lockfile から読み戻す peer の固定が明示的な接尾辞より少なく、
pnpm dedupeを実行するたびにキーが 2 通りに入れ替わっていた(pnpm dedupe --checkが常に失敗)。
After
ハッシュ化された接尾辞からも、スナップショットの
transitivePeerDependenciesと各 peer 提供元の peer を使って同じ固定を復元する。pnpm v11 は影響なし。
📦 v12.8.1 · トピック: 依存関係解決
プロジェクトの共通の祖先がファイルシステムのルートのとき何もインストールしない問題を修正(#16334)
Before
共有 lockfile のワークスペースで、プロジェクトの共通の祖先が
/やC:\だと、is-subdirの判定ですべてのプロジェクトが除外され、pnpm install/add/remove/update/importが何もせずに成功を報告していた。
After
修正された
is-subdir@2.0.1に更新し、これらのプロジェクトもインストールされる。影響を受けるのは TypeScript 版の pnpm v11 のみ。
📦 v12.8.1 · トピック: ワークスペース
pnpm update -g --latest が保存済みの範囲を超えて更新するように(#16325)
Before
グローバルパッケージの更新候補が既存のマニフェストの範囲を引き継ぐため、新しいバージョンがあっても
Already up to dateと表示されることがあった。
After
レジストリのパッケージは
@latestで解決する。レジストリ以外の指定やダウングレードの固定はそのまま保つ。
📦 v12.8.1 · トピック: CLI コマンド
injected なワークスペース依存の peer がワークスペースのリンクでも frozen install を通すように(#16346)
Before
12.7.0 以降、injected なワークスペースパッケージの peer を利用側がワークスペースから提供すると(
link:<dir>として記録)、pnpm install --frozen-lockfileが生成したばかりの lockfile をlocal dependency "lib" at "lib" is outdatedで拒否していた。満たされない peer でも同じく失敗した。
After
鮮度チェックは、宣言された peer の範囲と
peerDependenciesMetaだけをpackages:の記録と比較する。v12 のみの修正。
📦 v12.8.1 · トピック: ワークスペース
フィルタ付きインストール後に verifyDepsBeforeRun が誤って再インストールする問題を修正(#16324)
Before
フィルタ付きインストールの後、
pnpm-lock.yamlの更新時刻が新しくなるだけで(内容が同じでも)依存が古いと判定され、pnpm runがスクリプト有効でワークスペース全体を再インストールしていた(Docker のCOPY後など)。
After
ワークスペースの状態が
filteredInstallを記録していれば、そのインストールで実際に配置したものと lockfile を比較する。v11・v12 の両方を修正。
📦 v12.8.1 · トピック: タスク実行・並行処理
変種の統合後に peer 依存側のキーを付け直し、pnpm dedupe を冪等に(#16359)
Before
dedupe_peer_dependentsが変種を統合したあとも他のノードのキーを変えないため、キーが実在しない peer を名指しし続け、pnpm dedupeの直後のpnpm dedupe --checkが失敗していた(12.4.2 から)。
After
統合後に残ったノードの peer 接尾辞を、実際に解決している peer の名前で付け直す。
⏳ 未リリース · トピック: 依存関係解決
不明なオプションを拒否する前に、固定された pnpm へ引き渡すように(#16360、#16362)
Before
別バージョンの pnpm を固定したプロジェクトで、グローバルの pnpm が知らないオプションを切り替え前に拒否していた。例えばグローバルの pnpm 11 では、固定された pnpm 12 が対応する
pnpm install --auto-dedupeが失敗した(逆方向も同様)。
After
v11 は切り替えが起きなかったときだけ不明なオプションを報告し、v12 は clap が不明な引数を報告したときに argv から切り替えを再試行する。続く #16362 で、
c(config)やic/clean-install/install-clean(ci)の別名と、-gEのようなまとめた短縮フラグ内の-gを正しく扱うようにした。
⏳ 未リリース · トピック: ランタイム管理
injected なワークスペース依存を peer 変種の統合後に重複排除(#16361)
Before
injectWorkspacePackages: trueの新規インストールで、pnpm 11 ならlink:になるワークスペース依存が、peer 接尾辞付きのfile:コピーとしてimportersに記録されることがあった。
After
peer 依存側の重複排除を先に実行してから injected 依存の重複排除を行い、
link:として記録する。v12 のみの修正。
⏳ 未リリース · トピック: 依存関係解決
undici を 7.29.1 に更新(#16363)
Before
lockfile が undici 7.29.0 を固定しており、GHSA-3wwx-pv8p-q78v(moderate、
>=7.28.0 <7.29.1)の対象だった。
After
カタログの範囲を
^7.29.1に上げた。undici を同梱する TypeScript 版 CLI が対象で、Rust 版 CLI は undici を使わない。
⏳ 未リリース · トピック: セキュリティ
frozen install で古い Cargo.lock を拒否(#16357)
Before
cargo.enabled: trueのとき、Cargo.lockがCargo.tomlの要求を満たさなくなっていてもpnpm install --frozen-lockfileが成功していた(ファイルの存在しか確認していなかった)。
After
各ワークスペースメンバーの依存と
Cargo.lockの依存辺を照合し、合わなければERR_PNPM_OUTDATED_LOCKFILEでメンバー・クレート・要求・固定バージョンを示して失敗する。Rust 版 v12 のみ。
⏳ 未リリース · トピック: マルチエコシステム設定
CA 証明書の無いシステムでも NODE_EXTRA_CA_CERTS を追加扱いに(#16367)
Before
node:24-slimのように CA 証明書の無い Linux でNODE_EXTRA_CA_CERTSを設定すると、その CA だけを信頼するクライアントになり、レジストリへのリクエストがUnknownIssuerで失敗していた。
After
まず追加のルートなしでシステムのストアを確認し、失敗したら同梱の Mozilla ルートに追加のルートを加えて使う。
⏳ 未リリース · トピック: インストール
git 依存の準備で pmOnFail を尊重(#16382)
Before
pnpm のバージョンを固定した git 依存は、
--pm-on-fail=ignoreでもpnpm dlx --package pnpm@x pnpm installで準備されていた。NixOS ではダウンロードした汎用バイナリが起動できず、インストールできなかった。
After
pmOnFailがdownload以外なら、実行中の pnpm を直接呼ぶpnpmシムを使い、何もダウンロードしない。設定は入れ子のpnpm installにもpnpm_config_pm_on_failとして渡る。v12 のみ。
⏳ 未リリース · トピック: ランタイム管理
重複排除された injected ワークスペースパッケージの peer を pnpm deploy で束縛(#16381)
Before
injectWorkspacePackages: trueで、peer を dev dependency にも書いたワークスペースパッケージがあり、デプロイ対象にその peer の別バージョンもあると、pnpm deployがERR_PNPM_DEPLOY_AMBIGUOUS_PEERで失敗していた。
After
injected なワークスペースでは、デプロイ対象のグラフに含まれていれば、その peer をパッケージ自身の dev dependency の解決に束縛する。TypeScript 版・Rust 版の両方を修正。
⏳ 未リリース · トピック: パック・公開
ppc64le のリリースバイナリが起動時にクラッシュする問題を修正(#16384)
Before
Linux ppc64le 向けのリリースバイナリが、
pnpm --versionの出力前にクラッシュしていた(公開済みの v12.8.1 で再現)。古い binutils がgettidなどの呼び出しを誤ってリンクしていた。
After
この対象だけ Rust 同梱の LLD でリンクし、新しい libc の QEMU 上でのスモークテストをリリース工程に追加した。
⏳ 未リリース · トピック: ランタイム管理
Windows 以外では Path ではなく PATH だけをスクリプトに渡す(#16371)
Before
pnpm 12 はどのプラットフォームでも
PATHを大文字小文字を区別せずに探していた。macOS・Linux でPATHとPathの両方があると、どちらがスクリプトに渡るかが一定せず、exec: node: not foundで失敗するスクリプトがあった。
After
Windows 以外では
PATHだけに一致させる(Windows は従来どおり区別しない)。pnpm execなどでも POSIX のPathを消さずに子プロセスへ渡す。
⏳ 未リリース · トピック: タスク実行・並行処理
シムのヘルパーが command -p で見つからないとき PATH にフォールバック(#16379)
Before
Nix のビルドサンドボックスのように
command -pがヘルパーを見つけられない環境で、シムが動かなかった。
After
フィルタ済みの
PATHにフォールバックする(PATHにある場合のみ)。POSIX のシムとpnpm/pn/pnpx/pnxランチャー、v11 の cmd-shim が対象。
⏳ 未リリース · トピック: インストール
スクリプトのプロセスグループに残ったゾンビを待ち続けないように(#16372)
Before
12.6.0 以降、pnpm を PID 1 にしたコンテナで
pnpm runが入れ子になると、SIGTERMでスクリプトが終わっても pnpm が終了せず、SIGKILLまで残っていた(docker stopが終了コード 137)。
After
プロセスグループに残ったゾンビを待たずに終了し、スクリプトの終了直後に終了コード 143 で止まる。
⏳ 未リリース · トピック: タスク実行・並行処理
childConcurrency の既定値を 5 に(#16369)
Before
Rust 版(pacquet)では
childConcurrencyの既定値がmin(4, availableParallelism())で、pnpm 11 とドキュメントの 5 と食い違っていた。
After
既定値を 5 にした。
workspaceConcurrencyの既定値はmin(4, コア数)のまま。
⏳ 未リリース · トピック: タスク実行・並行処理
プロジェクトの pnpm-workspace.yaml の globalShims を無視(#16368)
Before
ドキュメントではプロジェクトのファイルは無視されるとしているのに、プロジェクトの
pnpm-workspace.yamlのglobalShimsが設定に取り込まれ、pnpm config get globalShimsやpnpm shim listなどに反映されていた。
After
プロジェクトのマニフェストの
globalShimsは捨てる。pnpm home にあるpnpm-workspace.yamlは信頼できる場所として引き続き読む。
⏳ 未リリース · トピック: セキュリティ
pnpm store prune が期限切れの dlx キャッシュを先に削除(#16387)
Before
期限切れ(
dlxCacheMaxAge、既定 1 日)のpnpm dlxキャッシュをストアの削除の後で消していたため、それらだけが使うパッケージが次のpnpm store pruneまで残っていた。
After
v11・v12 とも dlx キャッシュを先に削除する。v11 では、期限切れの dlx エントリがストアの唯一の登録プロジェクトだった場合は残る制限がある。
⏳ 未リリース · トピック: ストア
injected なワークスペース依存でも再インストールの高速経路を使う(#16404)
Before
v12.7.0 以降、自分のプロジェクトを inject するワークスペース(
injectWorkspacePackages: trueまたはdependenciesMeta.*.injected)では、何も変わっていなくても毎回フルインストールして injected プロジェクトをコピーし直していた。
After
高速経路をスキップするのは
sharedWorkspaceLockfile: falseのときだけにし、鮮度チェックはインストール対象のプロジェクト一覧のマニフェストを先に使う。変更が無ければ「Already up to date」になる。
⏳ 未リリース · トピック: ワークスペース
flate2 の zlib-rs バックエンドを有効化(#16235)
Before
tarball の gzip 展開に
flate2の既定のバックエンドを使っていた。
After
zlib-rs機能を有効にし、パッケージの展開を速くする。利用者から見える挙動の変更は無い。
⏳ 未リリース · トピック: インストール
autoDedupe と frozen install で pnpm run のたびにインストールが走る問題を修正(#16396)
Before
autoDedupe: trueのワークスペースを frozen lockfile でインストールすると、記録された dedupe の基準が失われ、verifyDepsBeforeRunがpnpm run/pnpm execのたびにインストールを起動していた。CI ではそのインストールも frozen なので基準が記録されず、毎回繰り返した。
After
何もしない frozen install でも記録済みの
autoDedupeを引き継ぎ、起動するインストールが frozen の場合はこの項目を比較しない。
⏳ 未リリース · トピック: タスク実行・並行処理
minimumReleaseAge で latest が新しすぎるとき、同じメジャーのプレリリースに戻るように(#16407)
Before
minimumReleaseAgeで安定版の dist-tag が指すバージョンが隠れると、タグは他の安定版にしか移れなかった。1.0.0-beta.xをlatestにしてきたパッケージが1.0.0を出した直後は、latestが0.0.1に戻っていた(pnpm create vinext-app@latestがERR_PNPM_DLX_NO_BINで失敗)。
After
候補を段階で順位付けし、同じメジャーの安定版が無ければ、そのメジャーのプレリリース(対象より前)を下位メジャーの安定版より優先する。v11・v12 の両方を修正。
⏳ 未リリース · トピック: 依存関係解決
Unix でユーザーごとのロックファイルを XDG_RUNTIME_DIR に置く(#16406)
Before
pnpm v12 はストア操作のロックなどを
/tmpに置くため、セッションごとのディレクトリにしか書けないサンドボックス(コーディングエージェントが使う macOS Seatbelt など)では、ストアに触れるコマンドがERR_PNPM_STORE_DIR_OPEN_OPERATION_LOCKで失敗していた。
After
$XDG_RUNTIME_DIRが現在のユーザーが所有する絶対パスのディレクトリなら、そこをロックの置き場所にする(他ユーザーが書き込める・所有者が書き込めないディレクトリは使わない)。変数が無ければ従来どおり/tmp。v12 のみ。
注意
XDG_RUNTIME_DIRのあるプロセス(ログインシェル)と無いプロセス(cron のpnpm store pruneなど)は、互いのロックを待たなくなる。
⏳ 未リリース · トピック: ストア
その他
- Windows でも Rust のドキュメントをビルドし CI で確認(#16314)📦 v12.8.1
- ドキュメントに変更が無いときは公開の push を省略(#16389)⏳ 未リリース
- perf(cli): rayon のグローバルプールを 16 スレッドに制限(#16316)📦 v12.8.1
- chore(release): 11.28.2、pacquet 12.8.1(#16349)📦 v12.8.1
- chore: 依存関係・Node.js・pnpm・GitHub Actions の更新(#15869)⏳ 未リリース
- perf(cli): インストールの高速経路の前に rayon プールのサイズを決める(#16344)⏳ 未リリース
- perf(registry): 繰り返しのバージョン選択の時間を 66〜82% 削減(#16351)⏳ 未リリース
- docs: 製品ドキュメントを実装の隣に移動(#16385)⏳ 未リリース
- perf(resolver): 走査と peer の処理でパッケージ ID を共有(#16345)⏳ 未リリース
- docs: 移行したドキュメントへの貢献をまとめる(#16393)⏳ 未リリース
- docs: v11・v12 のサイドバーの Introduction カテゴリを平坦化(#16400)⏳ 未リリース
- perf(deps-resolver): 同時に起きた最初のキャッシュミスを wanted キーごとに 1 回だけ実行(#16370)⏳ 未リリース
- docs(changeset): #16370 のパッチリリースノートを追加(#16402)⏳ 未リリース
- test(package-manager): lockfile ディレクトリ外の宣言済み・未宣言の importer のテスト(#16401)⏳ 未リリース
- perf(package-manager): hoisted の新規インストールでディレクトリクローンのキャッシュを使う(#16399)⏳ 未リリース
- fix(npm-lifecycle): 他のスレッドがまだ動いているゾンビは待ち続ける(#16392)⏳ 未リリース
- fix:
allowBuilds設定を検証(#16398)⏳ 未リリース - docs: 設定した
scriptShellがshellEmulatorより優先されることを明記(#16391)⏳ 未リリース - test: エコシステム e2e の cron で StackBlitz WebContainer 上の pnpm を実行(#16260)⏳ 未リリース
- fix(cli): プロジェクトのマニフェストにあるマシン単位の設定を拒否(#16366)⏳ 未リリース
- fix(publish): npm の README ファイル名を認識(#16352)⏳ 未リリース
- fix(deploy): ワークスペースルートのパッケージマネージャー固定をデプロイ先のマニフェストにコピーしない(#16405)⏳ 未リリース
- chore(release): pacquet 12.8.2(#16412)⏳ 未リリース