Skip to content

chore(repo): dev サーバのポートをセット単位で自動割当し配線を追従させる (ADR-0030)#197

Merged
shinyaoguri merged 1 commit into
mainfrom
chore/dev-port-autoswitch
Jul 19, 2026
Merged

chore(repo): dev サーバのポートをセット単位で自動割当し配線を追従させる (ADR-0030)#197
shinyaoguri merged 1 commit into
mainfrom
chore/dev-port-autoswitch

Conversation

@shinyaoguri

Copy link
Copy Markdown
Owner

目的

別プロジェクト (例: subimage) や別 worktree の dev サーバがポートを占有していると、vite が黙って +1 ずつずれ、editor の /verify プロキシ (5174 固定) や VITE_API_URL (8787 固定) がエラーも出さずに古い残骸プロセスや別物へつながる。実際に「5173 を別プロジェクトに取られ、npm run dev すると verify ばかり目に付く」混乱が発生した。複数サービスの同時デバッグを無調整で共存させる。

Closes #196 / 設計判断は ADR-0030

変更点

  • scripts/dev.mjs (新規): npm run dev の起動ランチャー。既定セット {editor 5173, verify 5174, workers 8787} の 3 ポートがすべて空くまでセットごと +10 (5183/5184/8797, …) で探索し (127.0.0.1 / ::1 の両方を検査、最大 10 セット)、決定値を EDITOR_PORT / VERIFY_PORT / WORKERS_PORT で各プロセスへ注入。concurrently に names (editor/verify/workers) と色を付け、起動バナーで実 URL を明示
  • packages/editor/vite.config.ts: server.port / /verify プロキシ target を env から解決。VITE_API_URL は .env がローカル既定 (http://localhost:<port>) のときのみ実 workers ポートへ追従 (staging 等の外部 URL は非干渉)。ランチャー割当時は strictPort: true (黙認ずれ禁止)
  • packages/verify/vite.config.ts: 同様に server.port + strictPort
  • package.json: "dev"node scripts/dev.mjs に。個別起動 (dev:editor 等) は従来どおり固定ポート + vite フォールバック
  • docs: ADR-0030 追加、ADR 索引・CLAUDE.md・CONTRIBUTING (「併用するときはポートを変える」手動運用の置換) を更新

変更しないもの: workers の CORS (dev は localhost ポート不問許可済み)、e2e (E2E_EDITOR_PORT/E2E_WORKERS_PORT で既に可変・EDITOR_PORT 未設定起動のため干渉なし)

確認方法

実機 (5173 = 別プロジェクト、5174/5175/8787 = 既存 dev サーバが占有中) で検証済み:

$ npm run dev
⚠ 既定ポート (5173/5174/8787) の一部が使用中のため +10 で起動します
  editor  http://localhost:5183/
  verify  http://localhost:5184/
  workers http://localhost:8797/
  • curl http://localhost:5183/<title>TypedCode</title> / :5184/<title>TypedCode Verify</title>
  • curl http://localhost:5183/verify/<title>TypedCode Verify</title> (プロキシが 5184 へ追従)
  • curl http://localhost:8797/health{"status":"ok","environment":"development"}
  • 配信 JS 内で VITE_API_URLhttp://localhost:8797 に置換されていることを確認
  • strictPort: 起動中に EDITOR_PORT=5183 npm run dev:editor → フォールバックせず即失敗 (exit 1)
  • npm run lint / npm run typecheck / unit tests (editor 106, verify 14) すべて green

🤖 Generated with Claude Code

別プロジェクト・別 worktree の dev サーバとポートが衝突すると vite が黙って
+1 ずれ、editor の /verify プロキシや VITE_API_URL が古いプロセスへつながる
問題への対応。

- npm run dev を scripts/dev.mjs 経由に: 既定 {5173,5174,8787} が埋まって
  いたらセットごと +10 で空きを探索 (127.0.0.1 / ::1 の両方を検査)
- 決定ポートを EDITOR_PORT/VERIFY_PORT/WORKERS_PORT で各サーバへ注入し、
  editor の /verify プロキシと VITE_API_URL (ローカル既定時のみ) を追従
- ランチャー割当時は strictPort: true で黙認ずれを禁止 (探索との race で
  衝突しても即失敗し、再実行で次の空きセットへ)
- 個別起動 (dev:editor 等) は従来挙動のまま
- concurrently に names/色を付与し、起動バナーで実 URL を明示
- CONTRIBUTING の「併用するときはポートを変える」手動運用を置換

Closes #196

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions github-actions Bot added documentation Improvements or additions to documentation pkg:editor packages/editor pkg:verify packages/verify + verify-cli pkg:repo リポジトリ横断 (docs/CI/依存) labels Jul 19, 2026
@github-actions

Copy link
Copy Markdown

🚀 Preview Deployment

Name URL
Preview https://25cb5a10.typedcode.pages.dev

Deployed from commit 48c63d4
API: staging Workers

@shinyaoguri
shinyaoguri merged commit bca25f7 into main Jul 19, 2026
7 checks passed
@shinyaoguri
shinyaoguri deleted the chore/dev-port-autoswitch branch July 19, 2026 00:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation pkg:editor packages/editor pkg:repo リポジトリ横断 (docs/CI/依存) pkg:verify packages/verify + verify-cli

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(repo): npm run dev のポート衝突時にセット単位で自動切替し、相互配線も追従させる

1 participant