【Node.js】Express + pm2 + Browsersyncでホットリロードを実現

Expressで開発をする際、通常はファイル変更のたびにサーバーを再起動してブラウザをリロードしなければ反映されませんが、この記事ではpm2とBrowsersyncを使うことによってそれらを自動で行う方法を解説します。

pm2とは 本番環境用のプロセスマネージャー。バックグラウンドでのサーバー起動、ログ管理、監視等が簡単にできる。もちろん開発環境でも使用可能。
Browsersyncとは ファイルの変更を監視してブラウザを自動でリロードしてくれるツール。

準備

まず下記記事を参考にExpressのアプリを作成してください。 【Node.js】Express入門

ディレクトリ構造は以下のようになっていると仮定してください。

loading...

pm2のインストール

pm2をグローバルにインストールします。

loading...

Browsersyncとnpm-run-allのインストール

npm-run-allは複数のnpmスクリプトを並列または順次実行するためのツールです。

loading...

Browsersyncの設定ファイルを作成

loading...

上記コマンドを実行するとbs-config.jsが作成されますので以下のように記述します。

loading...

起動スクリプトを記述

package.jsonに起動スクリプトを記述します。 scriptsの箇所を以下のように記述します。

loading...

各スクリプトの説明は以下の通りです。

pm2-dev bin/www デバッグモードでアプリケーションを起動します。ファイルの変更があればサーバーを再起動します。pm2 start bin/www --watchとほぼ同じです。
browser-sync start --config bs-config.js 設定ファイル(bs-config.js)と元にBrowsersyncを起動します。
run-p pm2 bs pm2bsを並列に実行します。run-pは並列、run-sは順次実行です。

起動

スクリプトの登録が完了したら実際に起動してみましょう。 package.jsonと同じ階層でnpm run devstartと入力します。

loading...

loading...

起動したらhttp://localhost:4000にアクセスして、ファイル変更時に自動で画面に反映されれば成功です。

参考

PM2 – Quick Start