ts-node-devでNode.jsをホットリロードさせる

TypeScript開発において、ソースをいちいちtsをjsにトランスパイルして実行をするというのは手間です。
そこでNode.jsをホットリロードできる環境を作り、これらの手間を省きます。

Node.jsのホットリロード環境を作るのに以下のパッケージが有名どころです。普段自分はnodemonを使用していますが、今回は検証も兼ねてts-node-devを導入しました。

なお、似たようなパッケージでts-nodeが存在しているのですが、ts-nodeはファイルをjsにコンパイルすることなく起動することが可能にするパッケージです。
ts-node-devはこのts-nodeに監視モードを加えて高速に再起動ができるようになったものです。

Tweaked version of node-dev that uses ts-node under the hood.

Githubにおいては上記のような記載があり、ts-nodeとnode-devを組み合わせたものらしいです。ts-nodeよりもts-node-devの使用をお勧めします。

インストールと開発

$ npm install -D ts-node-dev typescript
$ npm ts-node-dev --respawn src/index.ts
// もしくは 
$ npm tsnd --respawn src/index.ts

ちょっとしたオプションの紹介

--respawnオプションは本来実行して即終了のプログラムも終了せず、監視状態を維持します。

--transpile-onlyオプションは型のチェックを実行せずトランスパイルします。

設定ファイルの.node-dev.jsonに下記の設定を追加するとデスクトップ通知をしてくれるようになります。

{
  "notify" false
}

余談

現状nodemonの方が有名なのですが、nodemonは一回一回トランスパイルしているためリロードの速度がts-node-devに比べて遅いです。
ts-node-devの方がリロード速度が大幅に速かったりするので、開発にあったものを使用してください。

関連記事