nodejsで開発を行っていて、
サーバ側のファイルを編集するたびに
サーバを停止させ、再起動するという作業が面倒なため、
編集するたびにサーバが自動で再起動するよう設定しました。
まず私が使用しようとしたのは、「inotify-tools」というもの。
しかし、これだとコンソールからファイルを編集する分には、問題ないですが、vscodeから編集した場合には、検知ができず、サーバを再起動してもらえない。
困った。
ということで、監視するためのシェルを作成してみました。
#!/bin/bash
DIR=[監視ディレクトリ]
while true
do
TMP=$(stat $(find $DIR))
while true
do
TMP2=$(stat $(find $DIR))
if [ "$TMP" != "$TMP2" ] ; then
PID=$(ps -e | grep node | awk '{print $1}')
if [ ! -z "$PID" ]; then
sudo kill -9 $PID
fi
cd [サーバファイルまでのディレクトリ]
node [サーバファイル] &
break
fi
sleep 1
done
done
1秒ごとに確認を行い、監視しているディレクトリ以下のファイルに少しでも変更があれば、nodejsサーバを再起動させます。
ちょっと強引ですが、こちらを使用すれば、ファイルの変更を探知して、サーバを再起動させることが可能です。
実は...
ここまで読んでくれた方に朗報です。
シェルを作成しなくても、「hotnode」というパッケージを使用することで、自動でサーバを再起動してくれるようです。
なんてこった...。