Express.jsのバックグランド実行はforeverが便利という記事を書きました。
今回の記事ではコーディング中はnodemonというライブラリが便利なので紹介します。
コードの変更が発生すると自動的に再起動してくれるので修正を楽に確認できるようになります。
写真の緑字のログrestarting due to changes…で自動で再起動がかかっています。
Contents
nodemonの使い方
Express.jsの通常の起動方法の問題点
Express4.x系では以下のように起動します。
node bin/www
ブラウザにlocalhost:3000と入力すると開発中の画面が表示されます。
コードを修正して画面の表示を確認したい場合、Ctrl+Cと再度node bin/wwwを実行してアプリケーションを再起動させる必要があります。
nodemonを使うと自動でコード修正を検知して再起動してくれるので、手動のオペレーションを短縮することができます。
nodemonのインストール
通常のnode.jsライブラリ同様にnpmを利用してインストールします。
npm install nodemon -g
通常起動時のnodeをnodemonと入力することで起動できます。
nodemon bin/www
nodemonのパラメータでは-execが便利
デフォルト設定では拡張子がjs、mjs、coffee、litcoffee、jsonのファイルが検知対象になっています。
viewにejs、jadeを利用している人は検知されるように追加しておきましょう。
起動コマンドにオプション(-execまたは-e)で指定します。
jsとejsを利用している場合は以下のように起動します。
nodemon -e js,ejs bin/www
nodemon利用時の便利な設定
起動コマンドはpackage.jsonに
毎回-eオプションで拡張子を入力するのは面倒ですよね。
package.jsonに記載しておくと便利です。
scriptsのtestのvalue部分に上記のコマンドを記載しておくことでnpm testコマンドでExpress.jsonをnodemon -eで起動することができます。
{ "name": "shark", "version": "0.0.0", "private": true, "scripts": { "start": "NODE_ENV=production forever start ./bin/www", "test": "nodemon -e ejs,js,json start ./bin/www" }, "dependencies": { "ejs": "~2.5.7", "express": "^4.16.4" } }
本番用途でのバックグラウンド起動はforeverで
上記の例ではscriptsのstartに本番用の起動コマンドを記載しています。
本番用サーバではnodemonではなくバックグラウンド起動できるforeverがおすすめです。
scriptsのstartを本番用途、testを開発用途にすることでnpm start、npm testの使い分けで起動コマンドを切り替えられるので便利です。
nodemonもforeverも-gがついているとインストールできませんでした。
bin/wwwは何なんでしょうか?
パスがどうのこうのと言われて実行できません。インストールしたされた場所ですか?