れみゅーぶろぐ

某(元)高専生が多彩なジャンルにわたって書くブログ。非常に真面目なブログであると自負しております(要出典)。Twitter:@_remew_

node-devを用いてVirtualBox上のNodeアプリを自動再起動する方法

Qiitaにも書いてます

はじめに&結論

node-devというツールがあります。

これを使えば、Node.js製のアプリのソースコードに変更があった際に自動再起動してくれる優れものです。Express.jsKoa.jsを使ったAPIサーバー開発時に有用なツールです。 まぁ他にもpm2とかnodemonとかあるっぽいですが、とりあえずまずはこれを試してみようと思ったわけです。

簡単な使い方としては次のような感じです。

yarn add -D node-dev # ローカルにインストール
npx node-dev index.js # これ以降、ファイルを編集すると自動再起動する

このツールをVirtualBox上で動いているNode.js製サーバーに対して使って、ホスト側で編集をする!という開発スタイルを取ってみようかと思ったら、なんと自動再起動してくれないではありませんか。

ググったら、GitHubで次のようなIssueが見つかりました。

Using node-dev in a shared folder in a virtualbox guest #87

ははーんなるほどね、VirtualBoxがファイルの更新イベントを発火してくれないわけね、なるほど(多分)。

下の方でpollingがどうのって話をしているので、リポジトリのトップのREADMEを表示してpollで検索したら解決策が見つかりました。

--pollオプションをつければVirtualBox上でも自動再起動ができるようです。 2つ注意しないといけないのは、実行するファイル名より前に--pollオプションをつけないといけないというところと、--pollオプションはCPUを食うようです。

npx node-dev index.js --poll # NG
npx node-dev --poll index.js # OK

以上です。