Bunというパッケージマネージャー兼NodeJS互換JavaScriptランタイムが便利すぎます。メリットを紹介します。
速い
何をするにしても速いです。
Bunのサーバー・WebSocketサーバー・bun.sqlite等に、JavaScriptの実行自体も速く、パッケージマネージャとしてもインストールにグローバルキャッシュ等があってとても速いです。
打ちやすい
bunのキーボードの位置がとてもいいです。位置的にはnpmを左にずらした感じです。真ん中によってると打ちやすいですよね!
パッケージマネージャは大量にコマンドを打つでしょうからこれは大きいメリットではないでしょうか。
直接TypeScriptが動く
bun script.ts
とかですぐTypeScriptコードを実行できます。しかも型エラーも出るらしい。
JSXも対応らしいです。
bunのnpmパッケージがある
bunのバイナリがnpmパッケージにあるので、インストールしておけばbunを使ってない環境からでも互換性を保って実行できます。
もちろんpackage.jsonやnodejsのAPIの互換性有
まあ当たり前というか他も同じようです。
しかしbun.lockbというバージョン固定ファイルはバイナリで密度が高いです!
なのでハードディスクの節約ですね!(gitで追跡しずらい)
bun.lockというJSON形式になってgitで追跡しやすくなりました!
esモジュールとCommonJSどちらも使用可能
ごっちゃになって発狂することあるのでたすかります!
API充実
ざっとこんなものが。
- ホットリロード
- バンドラ(esbuild互換?)
- Web標準基準のAPI(Request等)
- HTTPサーバー
- テストツール(Jest互換)
- PostgresSQL・Sqliteドライバ
- WebSocket(HTTPサーバーと併用)
- 実行ファイルにコンパイル
bunのバンドラはiifeのグローバル出力がまだできてないので(n-m-;)
ですが
もうそういうテンプレ全部bunのAPIで済むじゃん!!
デメリット
ちゃんと紹介します。
- バンドラでIIFE用にビルドするときグローバルへの代入をするのにラッパー(?)が必要
- pnpmみたいな依存関係の依存関係の問題が解決されてないっぽい
- enterキーでpublishの認証画面が出てこなかったりする
- replが上手く動かない
- nodejsがインストールされてない場合、npm-run-allが上手く動作しない
- 発展途上でクラッシュしやすい(ソース:自分が投稿したissue)、ならバグを見つけて質を上げよう!
現在は体感ではHTMLのホットリロードが不安定です(いやその機能が新しすぎてそうだろ!ってなるぐらい)
結論
npm要らない!bun入れよう!
あくまで個人の意見です。