目的
- Express.js(Typescript) や Node.js の開発を進めていく上で、コード変更を検知してホットリロードする方法2つを紹介します。
- 最後の方で、どちらを使ったほうがいいか書いてあるので、参考にしてみてください。
環境
- Node: v10.15.2
- nodeenvを利用し、プロジェクトごとにバージョンを指定することがおすすめです。
利用するパッケージ
1. ts-node-dev
公式リファレンス
github
使用方法
1. packageをinstall
$ yarn add --dev ts-node-dev
2. 設定ファイルを作成(任意)
- 作成しなくてもいいですが、リロードするために通知がきてしまう設定はOFFにしておくことをおすすめします。
$ touch .node-dev.json
- 中身
{
"notify": false // これがないとコード変更するだけで通知がくるので、設定しておくことがおすすめです
}
3. アプリ実行コマンド
$ ts-node-dev [your node app]
2. nodemon
公式リファレンス
github
使用方法
1. packageをinstall
$ yarn add --dev nodemon
2. 設定ファイルを作成
- プロジェクトのルートディレクトリに作成します
$ touch .nodemon.json
中身
{
"watch": ["./src"], // watchするディレクトリを指定
"ext": "ts,json", // watchするファイルの拡張子を指定(カンマ区切りで複数選択可能)
"exec": "ts-node src/index.ts" // ファイルが変更された時に実行するコマンド
}
3. アプリ実行コマンド
$ nodemon [your node app]
どちらを利用すべきか
- ts-node-devのほうがリロード処理が圧倒的に早かったので、ts-node-devを利用することを勧めます。
- 毎回ts-nodeコンパイルを実行する必要がない分、nodemonより早くリロードを行うことができます。
公式ドキュメントより抜粋
This significantly increases speed of restarting comparing to node-dev -r ts-node/register ..., nodemon -x ts-node ... variations because there is no need to instantiate ts-node compilation each time.
- ただ、記事執筆時(2019/04)にGithubをみる限り、スターの数はnodemonのほうが多く、開発も継続的に行われています。また、どちらも簡単な設定で使用することができるので、実際に両方試したりドキュメントを読んだりして、自分に合っているほうを見つけてみるのでもいいと思います。