Bunとは
JavaScriptのランタイム。Node.jsと同じ立ち位置のもので、Node.jsと代替できるようにデザインされている。
ただ、バンドラー・テストランナー・パッケージマネージャーとしてのツールを備えている。
以下、特徴で気になったことをメモ。
- 高速な実行速度は、JavaScriptCoreエンジンとZigがポイントとなっている
- TypeScriptのネイティブサポート
- JSXのネイティブサポート
- ネイティブでWatch modeあり
- npm互換のパッケージマネージャー
- Jestに互換性のあるテスト構文
Remixと一緒に動かしてみる
Remixインストール
※bunはすでにインストール済みです。
bun create remix
インストール結果を見てみる
npm
、yarn
と比較すると、
- 同様に
node_modules
内にインストールされたパッケージが入ってます lock
ファイルはbun
のもの。バイナリファイルなのでvscodeでは開けませんでした
サーバー起動する
bun run dev
うむ。通常通り起動できました。
テストはどうだろう
bunはテストランナーでもあるとのことで、テストを書いてみようと思いました。
が、検証途中でJest, Vitestと変わらなさそうと思ったので中断しました🙏
Testing Library系(React Testing Library、DOM Testing Library、HappyDOM)にも互換性があるので、テストコードはほぼほぼ同じになる見込みです。
感想
「bunにしたら何か大きな違いがあるかも!」と思って動かしてみましたが、正直なところ既存技術との互換性が高いのもあって、あまり違いは感じられませんでした。
ただ、処理速度は速いに越したことはないし、TSのネイティブサポート、テストランナーなどのツールをデフォルトで提供してくれることは、設定の手間も減るので嬉しいことだと思います!
bun導入して良さそうなプロジェクトあったら導入して色々比較してみたいな。