mirror of
https://github.com/affaan-m/everything-claude-code.git
synced 2026-03-31 22:23:27 +08:00
273 lines
7.5 KiB
Markdown
273 lines
7.5 KiB
Markdown
# PM2 初期化
|
|
|
|
プロジェクトを自動分析し、PM2サービスコマンドを生成します。
|
|
|
|
**コマンド**: `$ARGUMENTS`
|
|
|
|
---
|
|
|
|
## ワークフロー
|
|
|
|
1. PM2をチェック(欠落している場合は`npm install -g pm2`でインストール)
|
|
2. プロジェクトをスキャンしてサービスを識別(フロントエンド/バックエンド/データベース)
|
|
3. 設定ファイルと個別のコマンドファイルを生成
|
|
|
|
---
|
|
|
|
## サービス検出
|
|
|
|
| タイプ | 検出 | デフォルトポート |
|
|
|------|-----------|--------------|
|
|
| Vite | vite.config.* | 5173 |
|
|
| Next.js | next.config.* | 3000 |
|
|
| Nuxt | nuxt.config.* | 3000 |
|
|
| CRA | package.jsonにreact-scripts | 3000 |
|
|
| Express/Node | server/backend/apiディレクトリ + package.json | 3000 |
|
|
| FastAPI/Flask | requirements.txt / pyproject.toml | 8000 |
|
|
| Go | go.mod / main.go | 8080 |
|
|
|
|
**ポート検出優先順位**: ユーザー指定 > .env > 設定ファイル > スクリプト引数 > デフォルトポート
|
|
|
|
---
|
|
|
|
## 生成されるファイル
|
|
|
|
```
|
|
project/
|
|
├── ecosystem.config.cjs # PM2設定
|
|
├── {backend}/start.cjs # Pythonラッパー(該当する場合)
|
|
└── .claude/
|
|
├── commands/
|
|
│ ├── pm2-all.md # すべて起動 + monit
|
|
│ ├── pm2-all-stop.md # すべて停止
|
|
│ ├── pm2-all-restart.md # すべて再起動
|
|
│ ├── pm2-{port}.md # 単一起動 + ログ
|
|
│ ├── pm2-{port}-stop.md # 単一停止
|
|
│ ├── pm2-{port}-restart.md # 単一再起動
|
|
│ ├── pm2-logs.md # すべてのログを表示
|
|
│ └── pm2-status.md # ステータスを表示
|
|
└── scripts/
|
|
├── pm2-logs-{port}.ps1 # 単一サービスログ
|
|
└── pm2-monit.ps1 # PM2モニター
|
|
```
|
|
|
|
---
|
|
|
|
## Windows設定(重要)
|
|
|
|
### ecosystem.config.cjs
|
|
|
|
**`.cjs`拡張子を使用する必要があります**
|
|
|
|
```javascript
|
|
module.exports = {
|
|
apps: [
|
|
// Node.js (Vite/Next/Nuxt)
|
|
{
|
|
name: 'project-3000',
|
|
cwd: './packages/web',
|
|
script: 'node_modules/vite/bin/vite.js',
|
|
args: '--port 3000',
|
|
interpreter: 'C:/Program Files/nodejs/node.exe',
|
|
env: { NODE_ENV: 'development' }
|
|
},
|
|
// Python
|
|
{
|
|
name: 'project-8000',
|
|
cwd: './backend',
|
|
script: 'start.cjs',
|
|
interpreter: 'C:/Program Files/nodejs/node.exe',
|
|
env: { PYTHONUNBUFFERED: '1' }
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
**フレームワークスクリプトパス:**
|
|
|
|
| フレームワーク | script | args |
|
|
|-----------|--------|------|
|
|
| Vite | `node_modules/vite/bin/vite.js` | `--port {port}` |
|
|
| Next.js | `node_modules/next/dist/bin/next` | `dev -p {port}` |
|
|
| Nuxt | `node_modules/nuxt/bin/nuxt.mjs` | `dev --port {port}` |
|
|
| Express | `src/index.js`または`server.js` | - |
|
|
|
|
### Pythonラッパースクリプト(start.cjs)
|
|
|
|
```javascript
|
|
const { spawn } = require('child_process');
|
|
const proc = spawn('python', ['-m', 'uvicorn', 'app.main:app', '--host', '0.0.0.0', '--port', '8000', '--reload'], {
|
|
cwd: __dirname, stdio: 'inherit', windowsHide: true
|
|
});
|
|
proc.on('close', (code) => process.exit(code));
|
|
```
|
|
|
|
---
|
|
|
|
## コマンドファイルテンプレート(最小限の内容)
|
|
|
|
### pm2-all.md(すべて起動 + monit)
|
|
````markdown
|
|
すべてのサービスを起動し、PM2モニターを開きます。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 start ecosystem.config.cjs && start wt.exe -d "{PROJECT_ROOT}" pwsh -NoExit -c "pm2 monit"
|
|
```
|
|
````
|
|
|
|
### pm2-all-stop.md
|
|
````markdown
|
|
すべてのサービスを停止します。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 stop all
|
|
```
|
|
````
|
|
|
|
### pm2-all-restart.md
|
|
````markdown
|
|
すべてのサービスを再起動します。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 restart all
|
|
```
|
|
````
|
|
|
|
### pm2-{port}.md(単一起動 + ログ)
|
|
````markdown
|
|
{name}({port})を起動し、ログを開きます。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 start ecosystem.config.cjs --only {name} && start wt.exe -d "{PROJECT_ROOT}" pwsh -NoExit -c "pm2 logs {name}"
|
|
```
|
|
````
|
|
|
|
### pm2-{port}-stop.md
|
|
````markdown
|
|
{name}({port})を停止します。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 stop {name}
|
|
```
|
|
````
|
|
|
|
### pm2-{port}-restart.md
|
|
````markdown
|
|
{name}({port})を再起動します。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 restart {name}
|
|
```
|
|
````
|
|
|
|
### pm2-logs.md
|
|
````markdown
|
|
すべてのPM2ログを表示します。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 logs
|
|
```
|
|
````
|
|
|
|
### pm2-status.md
|
|
````markdown
|
|
PM2ステータスを表示します。
|
|
```bash
|
|
cd "{PROJECT_ROOT}" && pm2 status
|
|
```
|
|
````
|
|
|
|
### PowerShellスクリプト(pm2-logs-{port}.ps1)
|
|
```powershell
|
|
Set-Location "{PROJECT_ROOT}"
|
|
pm2 logs {name}
|
|
```
|
|
|
|
### PowerShellスクリプト(pm2-monit.ps1)
|
|
```powershell
|
|
Set-Location "{PROJECT_ROOT}"
|
|
pm2 monit
|
|
```
|
|
|
|
---
|
|
|
|
## 重要なルール
|
|
|
|
1. **設定ファイル**: `ecosystem.config.cjs`(.jsではない)
|
|
2. **Node.js**: binパスを直接指定 + インタープリター
|
|
3. **Python**: Node.jsラッパースクリプト + `windowsHide: true`
|
|
4. **新しいウィンドウを開く**: `start wt.exe -d "{path}" pwsh -NoExit -c "command"`
|
|
5. **最小限の内容**: 各コマンドファイルには1-2行の説明 + bashブロックのみ
|
|
6. **直接実行**: AI解析不要、bashコマンドを実行するだけ
|
|
|
|
---
|
|
|
|
## 実行
|
|
|
|
`$ARGUMENTS`に基づいて初期化を実行:
|
|
|
|
1. プロジェクトのサービスをスキャン
|
|
2. `ecosystem.config.cjs`を生成
|
|
3. Pythonサービス用の`{backend}/start.cjs`を生成(該当する場合)
|
|
4. `.claude/commands/`にコマンドファイルを生成
|
|
5. `.claude/scripts/`にスクリプトファイルを生成
|
|
6. **プロジェクトのCLAUDE.md**をPM2情報で更新(下記参照)
|
|
7. ターミナルコマンドを含む**完了サマリーを表示**
|
|
|
|
---
|
|
|
|
## 初期化後: CLAUDE.mdの更新
|
|
|
|
ファイル生成後、プロジェクトの`CLAUDE.md`にPM2セクションを追加(存在しない場合は作成):
|
|
|
|
````markdown
|
|
## PM2サービス
|
|
|
|
| ポート | 名前 | タイプ |
|
|
|------|------|------|
|
|
| {port} | {name} | {type} |
|
|
|
|
**ターミナルコマンド:**
|
|
```bash
|
|
pm2 start ecosystem.config.cjs # 初回
|
|
pm2 start all # 初回以降
|
|
pm2 stop all / pm2 restart all
|
|
pm2 start {name} / pm2 stop {name}
|
|
pm2 logs / pm2 status / pm2 monit
|
|
pm2 save # プロセスリストを保存
|
|
pm2 resurrect # 保存したリストを復元
|
|
```
|
|
````
|
|
|
|
**CLAUDE.md更新のルール:**
|
|
- PM2セクションが存在する場合、置き換える
|
|
- 存在しない場合、末尾に追加
|
|
- 内容は最小限かつ必須のもののみ
|
|
|
|
---
|
|
|
|
## 初期化後: サマリーの表示
|
|
|
|
すべてのファイル生成後、以下を出力:
|
|
|
|
```
|
|
## PM2初期化完了
|
|
|
|
**サービス:**
|
|
|
|
| ポート | 名前 | タイプ |
|
|
|------|------|------|
|
|
| {port} | {name} | {type} |
|
|
|
|
**Claudeコマンド:** /pm2-all, /pm2-all-stop, /pm2-{port}, /pm2-{port}-stop, /pm2-logs, /pm2-status
|
|
|
|
**ターミナルコマンド:**
|
|
## 初回(設定ファイル使用)
|
|
pm2 start ecosystem.config.cjs && pm2 save
|
|
|
|
## 初回以降(簡略化)
|
|
pm2 start all # すべて起動
|
|
pm2 stop all # すべて停止
|
|
pm2 restart all # すべて再起動
|
|
pm2 start {name} # 単一起動
|
|
pm2 stop {name} # 単一停止
|
|
pm2 logs # ログを表示
|
|
pm2 monit # モニターパネル
|
|
pm2 resurrect # 保存したプロセスを復元
|
|
|
|
**ヒント:** 初回起動後に`pm2 save`を実行すると、簡略化されたコマンドが使用できます。
|
|
```
|