Bun、単なるNode.js互換という意味ではそんな興味ないなって思ってたけど、Cloudflare Workersみたいなエッジランタイム(で動くコード)をローカルでシュッと動かせるやつっていう見方をすると、すごくいいのでは・・・!ってなった。
Proxyサーバーもこんな簡単にかけるとは・・・。
最小プロキシー
違うオリジンをGETするだけなら、本当にこれだけ。
Bun.serve({ port: 3000, fetch: (req) => fetch( req.replace("http://localhost:3000", "http://api.example.com") ), })
みじか。
Node.jsでやってたときは、`http-proxy`をわざわざインストールして・・みたいなことしてたけど、もういらぬ。
好きなように`Response`を返せばいいので、CORSのヘッダ差し込みとか、`set-cookie`だけ貼り直すとかも、ストレートに書ける。
ホットリロードもある
`Bun.serve({ fetch })`ではなく、`export default { fetch }`とすると、ホットリロードできるようになる・・・!
export default { async fetch(req) { // ... }, }
こう書き換えた上で、`bun --hot`で実行するだけ。すんばらしい・・・。
`nodemon`みたいなプロセスごとリスタートじゃないので、グローバル変数とかそのまま生き残ってる。
もっと使っていきたい
これまで、ローカルで動かすツール系は、NodeでもBunでも動くようなコードをベースラインに据えてたけど、ここまでUXがいいとBunオンリーにするのも悪くないな・・・って心変わりした。
その上、TypeScriptも直接実行できるし、ファイルI/Oも速いし、`.env`も自動で読んでくれるし、SQLiteまで同梱されてるし、もうこのためにあったんでは!ってくらい感動してる。