2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

BunAdvent Calendar 2023

Day 19

Bun を使用して HTTP サーバーをホットリロードする

Last updated at Posted at 2023-12-03

Bun は、インポートされたファイルが変更された時に、プロセスを再起動・シャットダウンせずにコードを更新するフラグ --hot ホットリロード(hot-reload)と、プロセスをハード的に再起動する --watch をサポートしています。

Svelte、Vue、Reactなどにもある、いわゆる編集内容が即時反映される機能ですが、Bun --hot は、サーバー側で自動的に再実行してくれます。

今回は、この --hot の方をみていきます。

--hot は、プログラム編集時に、アプリケーションを再起動する手間が省かれ、変更を加えたコードを即座に反映できるので、開発やデバッグを効率的に進行できます。

たとえば、サーバー自体をシャットダウンせずに HTTP リクエスト ハンドラーを更新できるようになります。これにより、リフレッシュ速度が非常に速くなります。

ホットリロードフラグ付きで起動する
$ bun --hot run index.ts

このフラグ付きで下記のHTTPサーバーを起動すると、ソース ファイルが変更される度に bun プロセスを再起動せず、fetchハンドラーをリロードします。

念のために、一点だけ付け加えておくと、開発には便利なこの機能ですが、本番環境で万が一typoのひとつでも紛れ込んで壊れるなどという事は避けるなら、まあこのフラグを付けなければ良いだけではありますね。

プロセスを再起動しない利点とどちらをとるかはシステムなどにより違うかな。

index.ts
Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response(`Hello world`);
  },
});

したがって、例えばこのソースで「Hello world」を「Hello Bun」に書き換えると、サーバーを再起動しなくても、ブラウザ画面の表示も即座「Hello Bun」へ切り替わります。

ちなみに、このindex.tsファイルはTypeScriptの拡張子ですが、Bunではそれをトランスパイルする必要もありません。TypeScript/JSXで書かれたコードもそのまま自動的にトランスパイルされます。楽々。

最近 Qiita に書いた Bun 関連の記事10選

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?