🐙

毎回ターミナル4つ開いてる人へ:ローカル開発の複数コマンドをまとめて起動

に公開

pm2で複数プロセスをまとめて起動するメモ

最近ずっとローカル開発で wrangler(api, cron)と vite、storybook の4つを同時に立ち上げててイライラが限界に達したので調べてみたら pm2 が便利でした。
知ってる人も多いと思いますが、自分用メモがてら共有しておきます。


pm2とは

Node系でよく使われるプロセスマネージャです。
本番運用イメージが強いですが、開発でも複数プロセスまとめるのに向いてます。

  • まとめて起動/停止できる
  • ログを一括または個別で確認できる
  • 個別の再起動が楽(pm2 restart api みたいに呼べる)

導入

pm2を開発依存で入れておきます。

pnpm add -D pm2

設定ファイル

既に pnpm run api / cron / vite / sb みたいなスクリプトがある前提で、
プロジェクトルートに ecosystem.config.cjs を置きます。

// ecosystem.config.cjs
module.exports = {
  apps: [
    { name: "api", script: "pnpm", args: "run api" },
    { name: "cron", script: "pnpm", args: "run cron" },
    { name: "vite", script: "pnpm", args: "run vite" },
    { name: "storybook", script: "pnpm", args: "run sb" }
  ]
}

monorepoでパスが分かれている場合は cwd を追加すればOKです。
NODE_ENV とか不要なら特に指定しなくて大丈夫。


使い方

一括起動:

npx pm2 start ecosystem.config.cjs

状態確認やログ:

npx pm2 status
npx pm2 logs       # 全部
npx pm2 logs api   # apiだけ

停止や再起動も簡単です。

npx pm2 stop all
npx pm2 restart vite

まとめ

開発中に複数プロセス立ち上げるのが面倒な人には便利でした。
既に pnpm run コマンドがあるなら設定ファイル作るだけなのでお手軽です。

Discussion