概要

pnpm-workspace.yaml のタスクに、マシン全体で同時実行数を制限する「並行実行グループ」を追加する一連の変更。複数の worktree で重いタスク(Rust ビルドやテストなど)を同時に走らせてメモリ不足になる問題への対応で、枠はアドバイザリなファイルロックで管理される。待機タスクは当初 try_lock のポーリングだったが、到着順・優先度順にチケットで枠を取る方式に改善された。スクリプト実行まわりでは、--filter/-r 付きのショートハンド(pnpm --filter api vitest run など)でもスクリプトが無ければ exec にフォールバックするようになり、Windows で Ctrl+C 後にバッチシム経由のスクリプトが残って端末が戻らない問題が修正された(未リリース)。実行前の依存確認(verifyDepsBeforeRun)では、インストールするものが無いプロジェクトでインストールを省き、フィルタ付きインストール後に lockfile の更新時刻だけで再インストールしないようになった(v12.8.1・v11.28.2)。未リリースの修正として、autoDedupe と frozen install の組み合わせで毎回インストールが走る問題、macOS・Linux で Path が PATH として渡る問題、PID 1 の入れ子の pnpm run が SIGTERM で止まらない問題が直り、childConcurrency の既定値が 5 になった。

主な API・オプション

  • tasks.<name>.concurrencyGroup — タスクが属するグループ名
  • concurrencyGroups.<group>: <limit> — グループごとの同時実行数上限
  • <name>.priority — 待機時に優先して枠を得るための優先度
  • pnpm --filter <project> <command> / pnpm -r <command> — 選択したどのプロジェクトにもスクリプトが無ければ再帰的な exec を実行(--if-present・--dry-run・明示的な pnpm run では行わない)
  • pnpm tasks status — 各グループの実行中/待機中タスクと待ち順・待ち時間を表示(tasks という名前のスクリプトがある場合は pnpm pm tasks status を使う)
  • verifyDepsBeforeRun — フィルタ付きインストール後は実際に配置したものと lockfile を比較
  • childConcurrency — 既定値 5(v12 も pnpm 11 に合わせた、未リリース)

変更履歴

  • 2026-09-30 — autoDedupe と frozen install で pnpm run のたびにインストールが走る問題を修正(#16396)⏳ 未リリース · 変更
  • 2026-09-30 — childConcurrency の既定値を 5 に(#16369)⏳ 未リリース · 変更
  • 2026-09-30 — 入れ子の pnpm run が SIGTERM で終了しない問題を修正(#16372)⏳ 未リリース · 変更
  • 2026-09-30 — Windows 以外では Path ではなく PATH だけをスクリプトに渡す(#16371)⏳ 未リリース · 変更
  • 2026-09-30 — フィルタ付きインストール後の verifyDepsBeforeRun の誤判定を修正(#16324)📦 v12.8.1 · 変更
  • 2026-09-30 — インストールするものが無いプロジェクトで実行前のインストールを省略(#16317)📦 v12.8.1 · 変更
  • 2026-09-28 — Windows で Ctrl+C 後もスクリプトが残って端末が使えなくなる問題を修正(#16303)⏳ 未リリース · 変更
  • 2026-09-28 — --filter/-r 付きのショートハンド実行でも exec にフォールバック(#15430)📦 pnpr@0.1.0-alpha.13 · 変更
  • 2026-09-24 — 並行実行グループの待機タスクを到着順に処理(#15208)📦 v12.6.0 · 変更
  • 2026-09-24 — タスクに「並行実行グループ」とマシン全体の同時実行数上限を追加(#15010)📦 v12.6.0 · 変更

関連