プライベート開発時に使うmicrosoft/TypeScript-Node-Starterの開発環境がwatchなどあり快適。
社内の開発環境もその水準にするために調べた際のメモです。
nodeコマンドで実行する
tscでトランスパイルして、nodeコマンドで実行します。
tsc
node dist/app.js
プロセスを確認
xxx 20864 0.0 0.4 4594780 67820 s004 S+ 6:38PM 0:00.21 node /usr/local/Cellar/yarn/1.17.3/libexec/bin/yarn.js start
ts-node
tsc + nodeのハッピーセット
ts-node src/app.ts
プロセスを確認
xxx 23344 0.0 0.8 4637472 140320 s004 S+ 11:23PM 0:03.45 node /usr/local/bin/ts-node --files src/server.ts
nodemon
node.jsアプリケーションの変更を監視し、サーバーを自動的に再起動します。開発に最適です。
最初はプロセス管理のモジュールだと思ってたのですが、開発用のファイル監視&再起動モジュールだったようです。
プロセスを確認
ps aux | grep nodemon
xxx 22182 0.0 0.2 4560652 30024 s004 S+ 9:19PM 0:00.18 /usr/local/bin/node /Users/xxx/works/tsoa-project/node_modules/.bin/nodemon
pm2
PM2 は、ロード・バランサーが組み込まれた、Node.js アプリケーション用の実動プロセス・マネージャーです。PM2 では、アプリケーションの稼働を永続的に維持して、ダウン時間を発生させずに再ロードすることができる。
pm2でトランスパイルを使うことができるが、本番環境では非推奨とのことです。
PM2 - Transpilers | Integration | PM2 Documentation
pm2コマンドだけでts-nodeの代わりにもなり、watchオプションを使えばnodemonの代わりとしても使えます。(watchの設定はnodemonのほうが使いやすかった)
プロセスを確認
ps aux | grep pm2
xxx 1594 0.0 0.4 4614480 59928 ?? Ss 2:56PM 0:04.33 PM2 v4.4.0: God Daemon (/Users/xxx/.pm2)
God Daemon(神)
まとめ
コマンド | 役割 |
---|---|
tsc | TypeScriptをJavaScriptにトランスパイル |
ts-node | TypeScriptを直接実行 |
nodemon | ファイル監視、再実行 |
pm2 | プロセス永続化、ファイル監視 |
開発時の実行環境は tsc -w + nodemon
または ts-node + nodemon
がよさげ。
本番のプロセス管理にはpm2やfoeverなどを使う。