環境
windows10
Docker Toolbox
結論
dockerコンテナ内でts-node-devのホットリロードを有効にするためには --poll
オプションを付ける必要がある。
$ ts-node-dev --poll ./src/bin/www.ts
(起動用のファイルbin/www.ts
へのパスはディレクトリ構成に応じて書き換えてください。拡張子.tsは省略可)
もう少し詳しく
dockerのNode.jsコンテナ内で、アプリケーションの雛形をexpress-generatorで作りTypeScriptに書き換えた。
開発時にコードを書き換えるたびTSからJSにコンパイルし再起動するのは面倒。
ts-node-devをつかうとコンパイルせずにTSのまま直接起動し、コードを変更したときには再起動してくれる。
ts-node-devをインストールする
$ yarn add -D ts-node-dev
スクリプトを追加する
"scripts": {
"dev": "ts-node-dev ./src/bin/www.ts" // .tsは省略可
}
ts-node-devで起動する
$ yarn dev
起動したが、コードを変更しても再起動されない。
スクリプトに--poll
オプションを追記する
"scripts": {
"dev": "ts-node-dev --poll ./src/bin/www.ts"
}
再びyarn dev
で起動後、コードを変更してみると再起動され、変更内容が反映されていた。
もしかしたら
docker Toolbox ではなく docker Desktop をつかえば--poll
オプションがなくてもホットリロードされるのかも?
追記:
docker Desktopでも--poll
オプションが必要でした