期間: 2026-09-24 〜 2026-09-28 · PR 344 件(新機能 6 / 変更・修正 29 / その他 309)

このリポジトリの規模について

2 回分の取り込み(2026-09-24T08:15:52Z 〜 2026-09-27T23:50:38Z の 337 件と、2026-09-27T22:28:29Z 〜 2026-09-28T07:23:10Z の 7 件)をまとめて 1 回分として扱った。詳しく確認したのは 1 回目の上限(maxPrs: 30)の 30 件と 2 回目の 7 件。残り 307 件はタイトルだけの簡易情報(brief: true)のため、下の「その他」に領域ごとにまとめて記載する。

期間中に安定版 v12.7.0・v11.28.0 とプレリリース pnpr@0.1.0-alpha.13 が公開された。各 PR の収録状況は inbox の表記(📦 pnpr@0.1.0-alpha.13 / ⏳ 未リリース)をそのまま書いている。

新機能

pnpm install --allow-build でビルドスクリプトを選択的に許可(#15583)

何ができるようになったか

Rust 版 CLI の pnpm install が --allow-build オプションに対応した。pnpm add --allow-build と同じく、パッケージのライフサイクルスクリプトをインストール時に選んで許可(! を付けると拒否)でき、その判断は pnpm-workspace.yaml の allowBuilds に記録される。

  • 使い方: pnpm install --allow-build <パッケージ>(拒否は !<パッケージ>)

📦 pnpr@0.1.0-alpha.13 · トピック: CLI コマンド

pnpm init --bare で最小限の package.json を作成(#15541)

何ができるようになったか

pacquet(Rust 版 CLI)の pnpm init に --bare フラグが追加された。フルのひな形ではなく、必須フィールド(devEngines、packageManager、type: "module")だけの package.json を作る。

  • 使い方: pnpm init --bare

📦 pnpr@0.1.0-alpha.13 · トピック: CLI コマンド

package.json の項目間の空行を保持(#15474)

何ができるようになったか

pnpm add/remove/update は package.json をパース結果から書き直すため、項目を区切る空行が消えていた。読み込み時に各メンバーの前の空行を記録し、保存時に同じ位置へ戻すようになった。

  • 対象: Rust 版 v12 のみ、package.json のみ(package.json5・package.yaml は従来の仕組み)。削除されたメンバーの空行は消え、新しいメンバーには空行が付かない
  • 制限: 閉じ括弧の前の空行や配列要素間の空行は追跡しない

📦 pnpr@0.1.0-alpha.13 · トピック: CLI コマンド

パックに含まれる .env ファイルを警告(#15681)

何ができるようになったか

pnpm pack/pnpm publish が、files フィールドで明示されていない .env・.env.* ファイルが tarball に含まれるときに警告するようになった。tarball の中身は変わらない。

  • 対象外: テンプレート(.env.example、.env.sample、.env.template)。dist のようなディレクトリ指定に含まれるだけでは「明示」とみなさない。pack --json では警告を出さない
  • 今後: v12 のみの新挙動で、pnpm v13 ではエラーにする予定

⏳ 未リリース · トピック: パック・公開

pnpm pack --silent で出力を抑制(#15726)

何ができるようになったか

サイレントレポーターが選ばれているとき、pnpm pack が tarball のファイル一覧とサマリーを出さなくなった(単体・再帰の両方)。

  • 使い方: --silent、-s、--reporter=silent、--loglevel=silent、または設定でのサイレント指定。--json を明示した出力はそのまま出る

⏳ 未リリース · トピック: パック・公開

http/https の tarball 依存で Cache-Control を尊重(#15719)

何ができるようになったか

http:/https: の tarball URL で指定した依存について、pnpm install がレスポンスの Cache-Control に従うようになった。新鮮なうちはリクエストを送らずストアから取り出し、古くなったら If-None-Match で再検証する。

  • 仕組み: URL と integrity の対応を <cacheDir>/v11/tarball-resolutions に ETag・Cache-Control・Age/Date 由来の経過時間とともに保存する。認証情報付きで取得したレスポンスは記録しない
  • 嬉しい場面: lockfile なしのインストールでも毎回 HEAD・GET を送らずに済む(v12 のみ)

⏳ 未リリース · トピック: インストール

変更・修正

ワークスペースのパッケージ内での pnpm list を現在のプロジェクトに限定(#15522)

Before

v11 以降、list が recursiveByDefault: true だったため、ワークスペース内のどこで pnpm list/pnpm ll を実行してもワークスペース全体を再帰的に表示していた。

After

ワークスペースのパッケージディレクトリで -r/--filter なしに実行すると、そのパッケージだけを表示する(v10 の挙動に戻る)。ルートでは従来どおり再帰。TypeScript 版・Rust 版の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: CLI コマンド

重複排除で catalog: が固定するバージョンを優先(#15518)

Before

優先バージョンの初期値を作るとき catalog: 指定はバージョンとして扱われずスキップされたため、autoDedupe/pnpm dedupe で同点になると最も高いバージョンが選ばれ、重複が減らないことがあった。

After

catalog: 指定をカタログ経由で解決し、package.json に直接書いた指定と同じ重みを与える。v12(autoDedupe と pnpm dedupe)と v11(pnpm dedupe)の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: 依存関係解決

レジストリから消えたバージョンが lockfile にあっても pnpm update <pkg> できるように(#15450)

Before

lockfile が公開取り消し済みなどのバージョンを固定していると、解決前の lockfile 検証で minimumReleaseAge のチェックに失敗し、置き換えるはずの update 自体が実行できなかった。

After

名前指定の update が全 importer の該当エントリを置き換える場合(--depth 指定なし)に限り、そのエントリの minimumReleaseAge/trustPolicy 検証をスキップする。新たに選ばれるバージョンには同じポリシーが適用される。スキップがあった検証結果はキャッシュしない。

📦 pnpr@0.1.0-alpha.13 · トピック: 依存関係解決

isolated リンカーで bundled dependencies をパックに含められるように(#15267)

Before

isolated リンカーでは pnpm pack/pnpm publish が bundled dependencies(とその依存)を正しく含められなかった。

After

各 bundled dependency を親の実ディレクトリから Node と同じ方法で解決し、tarball 内でも Node が同じパッケージを解決できる位置に配置する。ワークスペースのパッケージにも対応。解決はワークスペースルート(ワークスペース外ならプロジェクト)より上には上らない。PnP リンカーでは引き続き拒否する。v11・v12 の両方。

📦 pnpr@0.1.0-alpha.13 · トピック: パック・公開

複数階層の modulesDir をプロジェクトディレクトリに正しく連結(#15524)

Before

pacquet で www/modules のような複数階層の modulesDir を指定すると、fresh install ではワークスペースメンバーの依存が別の場所に入り、frozen install では設定が最後の要素(modules)に切り詰められていた。

After

相対パスの modulesDir を丸ごと各プロジェクトのディレクトリに連結する(pnpm 11 と同じ)。pnpm bin も設定どおりの .bin を表示する。

📦 pnpr@0.1.0-alpha.13 · トピック: インストール

engineStrict のチェック前に readPackage フックを適用(#15525)

Before

v11 で engineStrict: true のとき、.pnpmfile.cjs の readPackage フックで engines を緩めても、フック適用前のマニフェストで判定されるため ERR_PNPM_UNSUPPORTED_ENGINE になっていた。

After

インストール可否(engineStrict を含む)の判定前にフックを実行し、フックが二重に走らないようにした。

📦 pnpr@0.1.0-alpha.13 · トピック: インストール

公開待ちのタイムアウト後に余分なメタデータ確認を送らないように(#15527)

Before

公開後の反映待ち(wait_for_published_packages)で、スリープの終了とタイムアウトの期限が重なると、タイムアウトが検出される前に 2 回目のメタデータ確認リクエストが送られることがあった。

After

期限を最初に一度だけ計算し、次の確認までに期限を過ぎる場合はスリープせずにタイムアウトエラーを返す。

📦 pnpr@0.1.0-alpha.13 · トピック: パック・公開

pnpm deploy がコマンドラインの --package-import-method を尊重(#15416)

Before

pnpm deploy はコマンドラインで渡した --package-import-method を無視し、表示されるインポート方法も誤っていた。

After

指定したインポート方法が使われ、正しく表示される。デプロイ先のファイルは元のワークスペースとハードリンクを共有しない。v11・v12 の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: パック・公開

private パッケージのバージョン更新がレジストリ確認なしで行われるように(#14934)

Before

v11.16.0 以降、リリース済みかどうかを npm レジストリで確認するため、private パッケージや npm に公開しないパッケージのバージョン更新が壊れていた。registry 方式の changelog 保存では、intent ファイルが .changeset/ に残り続けた。

After

private なワークスペースパッケージはレジストリ確認なしで保留中のバージョン更新を受け取り、設定にかかわらず repository 方式で CHANGELOG.md に追記される。TypeScript 版・Rust 版の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: パック・公開

pnpm setup の「Text file busy」エラーを修正(#15521)

Before

Linux で pnpm setup がエイリアススクリプト(pn、pnpx、pnx)を書き込むたびに Text file busy (os error 26) で失敗していた。これらが実行中の pnpm 本体のハードリンクになっていたため。

After

すべてのエイリアスファイル(.cmd/.ps1 を含む)を一時ファイルへの書き込みと rename で置き換える。v11 は影響なし。

📦 pnpr@0.1.0-alpha.13 · トピック: CLI コマンド

peer dependency の問題をプロジェクトごとに表示(#15459)

Before

pnpm peers check(と ERR_PNPM_PEER_DEP_ISSUES の本文)はどのプロジェクトの問題かを表示せず、同じ内容がプロジェクトの数だけ並んでいた。

After

プロジェクト ID の見出しの下に字下げして表示する。ルートプロジェクトだけの場合は従来どおり見出しなし。v11・v12 の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: CLI コマンド

ワークスペースでない単一プロジェクトでも、固定された pnpm の release age 除外を記録(#15461)

Before

pnpm-workspace.yaml の無いプロジェクトで、固定されたバージョンの pnpm に切り替えるとき、エンジンのインストールで得た minimumReleaseAge の承認が使い捨てのインストールディレクトリに書かれて失われていた。

After

ワークスペースルート、無ければコマンドを実行したディレクトリに書き込む(必要なら pnpm-workspace.yaml を作る)。v11 は影響なし。

📦 pnpr@0.1.0-alpha.13 · トピック: ランタイム管理

package.yaml/package.json5 のパッケージでも files フィールドを適用(#15414)

Before

package.json の代わりに package.yaml や package.json5 を使うパッケージでは、マニフェストの files の許可リストが適用されていなかった。

After

v11 では pnpm pack と git・injected 依存で、v12 では git 依存で files を適用し、これらのマニフェスト自体も常に含める。

📦 pnpr@0.1.0-alpha.13 · トピック: パック・公開

lockfile を共有しないワークスペースで injected 依存の変更を反映(#15356)

Before

shared-workspace-lockfile: false のとき、injected なワークスペースパッケージの依存を変えても、利用側のプロジェクトが「変更なし」と判定されて再解決されなかった。

After

injected パッケージ自身の依存が変わったら再解決し、lockfile を更新する。v11・v12 の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: ワークスペース

nodeLinker: hoisted で削除したパッケージのコマンドを .bin から除去(#15429)

Before

hoisted リンカーでパッケージのディレクトリが削除されても、node_modules/.bin のコマンドが残り、壊れたリンクになっていた。

After

ディレクトリを消す前に、そのパッケージのコマンドを .bin から外す。同じ node_modules に残る別パッケージが提供するコマンドは再作成される。v11・v12 の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: インストール

runtime: の範囲指定の || が npm パッケージとして解決される問題を修正(#15443)

Before

devEngines.runtime の ^22.18.0 || ^24.0.0 のように || や空白を含む runtime: の範囲が、同名の npm パッケージ node として解決され、.bin/node が存在しないファイルを指してスクリプトが失敗していた。

After

最初の要素にコロンを含む指定は npm リゾルバーが扱わない。影響を受けた版で書かれた lockfile は pnpm install --fix-lockfile で解決し直せる(pnpm update node でも直るが範囲が解決済みバージョンに書き換わる)。

📦 pnpr@0.1.0-alpha.13 · トピック: ランタイム管理

Nix で依存パッケージの bin がシムを乗っ取れないように(#14903)

Before

Nix では command -p が呼び出し元の PATH にフォールバックするため、node_modules/.bin の readlink・sed・uname といった名前の bin が POSIX シムやランチャーを乗っ取れた。

After

すべての POSIX シムとランチャー(pnpm、pn、pnpx、pnx、pnpm setup のエイリアスを含む)が、node_modules と相対・空のエントリを除いた PATH でヘルパーを探す。再インストールで修正前のシムが置き換わる。v11・v12 の両方。

📦 pnpr@0.1.0-alpha.13 · トピック: セキュリティ

プレリリースから安定版の範囲へ変えたときに再解決(#15532)

Before

21.0.0-rc.0 に固定された依存の指定を 21.0.0 や ^21.0.0 に変えても、lockfile にはプレリリースが残り、続く pnpm install --frozen-lockfile が失敗していた。

After

lockfile 再利用の判定を厳密な range.satisfies(version) にし、安定版の範囲に変えたら再解決する。

📦 pnpr@0.1.0-alpha.13 · トピック: 依存関係解決

--filter "[<since>]" をマージベースと比較(#15442)

Before

git diff <since> で作業ツリーと直接比較していたため、現在のブランチの分岐後に <since> 側に入った変更のプロジェクトまで選ばれていた。

After

git merge-base <since> HEAD と作業ツリーを比較する(未コミットの変更も選ばれる)。マージベースが見つからない場合(shallow clone など)は従来どおり <since> と比較する。v11・v12 の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: ワークスペース

マニフェストが消えたワークスペースプロジェクトがあると frozen install を失敗させる(#15427)

Before

pnpm-lock.yaml にあるワークスペースプロジェクトのディレクトリや package.json が消えていても、pnpm install --frozen-lockfile は何も言わずに成功していた。

After

ワークスペース全体を対象にした frozen install は ERR_PNPM_OUTDATED_LOCKFILE で失敗し、該当する importer を示す。pnpm-workspace.yaml のパターンから外しただけのプロジェクトやフィルタ付きの install は従来どおり。

📦 pnpr@0.1.0-alpha.13 · トピック: ワークスペース

--filter/-r 付きのショートハンド実行でも exec にフォールバック(#15430)

Before

pnpm <command> はスクリプトが無ければ依存の bin を実行するが、pnpm --filter <project> <command> や pnpm -r <command> ではこのフォールバックが無く ERR_PNPM_RECURSIVE_RUN_NO_SCRIPT で失敗していた。

After

選択したどのプロジェクトにもそのスクリプトが無ければ、同じ選択で再帰的な exec を実行する。--if-present・--dry-run、明示的な pnpm run ではフォールバックしない。v11・v12 の両方で修正。

📦 pnpr@0.1.0-alpha.13 · トピック: タスク実行・並行処理

pnpm-workspace.yaml の除外エントリを既存の引用符スタイルに合わせる(#15533)

Before

v12 は minimumReleaseAgeExclude/trustPolicyExclude のエントリを常にシングルクォートで書いていたため、ダブルクォートを使うファイルではフォーマッタとの間で毎回差分が出ていた。

After

ファイル内でダブルクォートが多数派ならダブルクォートで書く。それ以外はシングルクォート。既存のエントリはそのまま残す。

📦 pnpr@0.1.0-alpha.13 · トピック: ワークスペース

lockfile の tarball URL から既定ポートを除去(#15540)

Before

レジストリのメタデータに :443/:80 付きの tarball URL があると、pacquet はそのまま lockfile に残していた。

After

解決時に既定ポートを取り除き、v11 と同じ挙動にする。

📦 pnpr@0.1.0-alpha.13 · トピック: 依存関係解決

レジストリが応答を止めたときにタイムアウトだと分かるエラーに(#15544)

Before

fetchTimeout を超えてデータが届かないとき、最終的なエラーは fetch failed や terminated などで、タイムアウトしたことが分からなかった。

After

v11 は timed out, no data received for <ms>ms(tarball は ERR_PNPM_FETCH_TIMEOUT)と fetchTimeout 設定のヒントを、v12 は operation timed out を含むメッセージを出す。

📦 pnpr@0.1.0-alpha.13 · トピック: インストール

sharedWorkspaceLockfile: false のインストールを高速化(#16286)

Before

グローバル仮想ストア(enableGlobalVirtualStore)では、各プロジェクトが内部の .pnpm をワークスペースルートに書いていたため、再インストールのたびに差分が出て、EEXIST で失敗することもあった。すでにビルド済みのスロットのビルドスクリプトも再実行していた。

After

各プロジェクトが自分の .pnpm を持ち、ビルド済みのスロットは再ビルドしない。プロジェクトごとの lockfile の内容は変わらない。

⏳ 未リリース · トピック: ワークスペース

時間ベースの解決で成熟したバージョンを優先(#16304)

Before

同じ範囲を満たす成熟したバージョン(例 1.1.0)があるのに、未成熟な保守リリース(例 1.0.2)を選び、release age の厳格な検証で失敗することがあった。

After

最初の選択で一致が無ければ、元の minimumReleaseAge の基準を満たす最小の一致を探してから、制限なしのフォールバックに進む。TypeScript 版・Rust 版の両方。

⏳ 未リリース · トピック: 依存関係解決

arm64 musl 向けの pnpm 11 実行ファイルの配布を停止(#16307)

Before

arm64 musl Linux(ARM 上の Alpine)で、pnpm 11 のスタンドアロン実行ファイル @pnpm/linuxstatic-arm64 が起動時にセグメンテーション違反を起こしていた。

After

pnpm 11 は @pnpm/linuxstatic-arm64 と pnpm-linux-arm64-musl の tarball を配布しない(@pnpm/exe の preinstall は npm install -g pnpm か pnpm 12 を勧めて失敗する)。pnpm 12 はこの環境で 12 未満へ切り替え・self-update するとき JavaScript 版の pnpm を入れる。

⏳ 未リリース · トピック: ランタイム管理

再利用した子の再解決で npm エイリアスを保持(#16310)

Before

v12 で lockfile から再利用したノードの子を解決し直すとき、オーバーライドで書かれた npm: エイリアスが失われ、ERR_PNPM_NO_MATCHING_VERSION になったり、無関係なパッケージのリリースを lockfile に書いたりしていた。

After

子の指定を npm:<name>@<version>(名前付きレジストリなら <registry>:<name>@<version>)にする。v11 は影響なし。

⏳ 未リリース · トピック: 依存関係解決

Windows で Ctrl+C 後もスクリプトが残って端末が使えなくなる問題を修正(#16303)

Before

Windows でバッチシム経由のスクリプト(vite dev など)を中断すると、cmd.exe の「バッチ ジョブを終了しますか (Y/N)?」の入力待ちを pnpm が待ち続け、端末が戻らなかった。

After

最初の中断から 1 秒の猶予を過ぎても子が残っていれば、pnpm がシェルを終了する(2 回目の中断なら即座に)。猶予中に自分で終了した子はそのまま。v12 のみの不具合。

⏳ 未リリース · トピック: タスク実行・並行処理

その他

  • リリース作業: 11.28.1、pacquet 12.8.0、pnpr 0.1.0-alpha.14(#16312)⏳ 未リリース
  • リリーススクリプト bump.ts が Rust 製品の npm ラッパーの changelog を保留セクションに移すよう修正(#16315)⏳ 未リリース

maxPrs 超過のため本文を持たない brief: true の PR(307 件)を、タイトルの接頭辞・領域ごとにまとめたもの: