Files
everything-claude-code/docs/ja-JP/commands/pm2.md
2026-02-12 16:56:29 +09:00

7.5 KiB

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拡張子を使用する必要があります

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)

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)

すべてのサービスを起動し、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

すべてのサービスを停止します。
```bash
cd "{PROJECT_ROOT}" && pm2 stop all
```

pm2-all-restart.md

すべてのサービスを再起動します。
```bash
cd "{PROJECT_ROOT}" && pm2 restart all
```

pm2-{port}.md(単一起動 + ログ)

{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

{name}({port})を停止します。
```bash
cd "{PROJECT_ROOT}" && pm2 stop {name}
```

pm2-{port}-restart.md

{name}({port})を再起動します。
```bash
cd "{PROJECT_ROOT}" && pm2 restart {name}
```

pm2-logs.md

すべてのPM2ログを表示します。
```bash
cd "{PROJECT_ROOT}" && pm2 logs
```

pm2-status.md

PM2ステータスを表示します。
```bash
cd "{PROJECT_ROOT}" && pm2 status
```

PowerShellスクリプト(pm2-logs-{port}.ps1)

Set-Location "{PROJECT_ROOT}"
pm2 logs {name}

PowerShellスクリプト(pm2-monit.ps1)

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セクションを追加(存在しない場合は作成):

## 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`を実行すると、簡略化されたコマンドが使用できます。