開発に集中するための諸設定をば。ログまわりは以下に書いた。
コードを書き換えたら自動的に再起動させる
node-supervisor を使う。
こんな感じ。
npm install supervisor
./node_modules/.bin/supervisor app.js
監視対象の拡張子を -e オプションで指定できる。デフォルトは node,js 。 json ファイルを追加したい場合、以下のようにする。
./node_modules/.bin/supervisor -e node,js,json app.js
無視するファイルとディレクトリの指定は -i オプション。 npm install や npm prune したときにすごい勢いで再起動がかかるのを避けるにはこうする。
./node_modules/.bin/supervisor -i node_modules app.js
似たようなことをするのがいくつかあるけど supervisor が一番よかった。
- nodemon
- https://github.com/remy/nodemon
- Vagrant の synced folder 経由で使う場合は遅くなるオプション -L を使わないと認識しない
- node 側で setuid したときにサーバープロセスをうまく kill できない
- PM2
- https://github.com/Unitech/pm2
- いらない機能詰め込みすぎで使いたくない
デバッグに Google Chrome の開発者ツールを使う
node-inspector を使う。
以下を打つ。
npm install node-inspector
node-debug app.js
するとこんなんが出てくるので、表示されている URL を Google Chrome で開く。
Node Inspector is now available from http://localhost:8080/debug?port=5858
これでクライアント js と同じようにデバッグできる。
npm run-script で自動化する
./node_modules/.bin/supervisor app.js なんて長くていちいち打ってられない。そんなときに楽できるのが package.json で定義できるコマンドエイリアス。 package.json の scripts に書かれたコマンドを npm run-script <scriptname> で起動できる。
以下のような package.json を用意しておく。
{
"name": "app",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "NODE_ENV=production node ./app.js",
"dev": "NODE_ENV=development supervisor -i package.json,node_modules -e node,js,json ./app.js",
"debug": "NODE_ENV=development node-debug ./app.js"
},
"dependencies": {
"supervisor": "*",
"node-inspector": "*",
}
}
npm run-script dev で開発用にアプリ立ち上げ、 npm run-script debug でデバッグ用に立ち上げ。
start だけは特別で、 run-script がいらない。 npm start で本番アプリが立ち上がる。
チーム開発してるときに起動時のコマンドを固定化できるというのが一番のメリットかも。