結論から、
私の結論としてはnodemonを使うしかないかと。
ソース監視の方式に
nodemon
supervisor
node-dev
pm2
っといったアプリがありますが、すべてデフォルトではVagrantの共有フォルダに反応してくれません。
試行錯誤で結局全て試してしまったので、紹介する。
Nodemonをインストール
nodemonをインストール
1 |
npm install nodemon -g |
後はnodeコマンドの代わりにnodemonを使うだけ
1 |
$ nodemon server.js |
これがスタンダードなやり方。
VagrantのSynced folderを使っている場合には遅くするために”L”というオプションをつけて、
1 |
$ nodemon -L server.js |
っとしなくてはいけないのですが、これが何故か上手くいかない。
何故かと言うと、↑のコマンドではファイルの更新を監視する対象(watch)
が「*.*」っとなっている、これでは同階層のファイルに対する変更しか監視しない。
監視したい対象は自分で指定する必要がある。
私の場合はこんな感じ。
1 |
nodemon -L server.js -watch packages/**/**/**/* packages/**/**/* |
これでOK。
Vagrantの共有フォルダで更新を監視したいだけなら、ココまでの部分でOK。
以降は蛇足。
Supervisorのインストール。
supervisorをインストールした。
1 |
$ npm install supervisor -g |
無視するファイルとディレクトリの指定は -i
npmでインストールをかけたときに異常に再起動しないために
1 |
$ supervisor -i node_modules server.js |
としてみたけど、結局VagrantのSynced Folderでは、これも結局使えない。
Node-devのインストール
1 |
$ npm install node-dev -g |
PM2のインストール
$ npm install pm2 -g
こうです。
1 |
$ pm2 start server.js --watch |
そうするとこう。
1 2 3 4 5 6 |
$ pm2 list ┌──────────┬────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │ ├──────────┼────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ server │ 0 │ fork │ 24446 │ online │ 1 │ 13s │ 0% │ 46.3 MB │ enabled │ └──────────┴────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘ |
ただひとつ残念なのが、今まで標準出力でリアルタイムに監視できてたログが見えなくなってしまうこと、標準出力がどこに言っているかというと
~/.pm2/logs/ ここ
ここに、
エラー:server-error-0.log
標準出力:server-out-0.log
っとわけて収納されている。
リアルタイム監視をしたいなら
1 |
$ tail -f ~/.pm2/logs/server-error-0.log |
っとすればリアルタイム監視ができます。
pm2での監視もういいよってなったらこう。
1 |
$ pm2 delete all |
ただSynced Folderで使えない。