Bun について
Bun は、パッケージ管理、モジュールバンドリング、テスト実行を 1 つのツールに統合した現代的な JavaScript ランタイムです。開発者は単一のコマンドラインインターフェースで依存関係のインストール、コード実行、テスト検証を行えます。
主な機能
- 01bun install で プロジェクト依存関係を高速にインストール
- 02bun run で TypeScript と JavaScript ファイルを直接実行
- 03bun test でテストスイートを実行・デバッグ
活用シーン
- 01ツールチェーンの複雑さを減らしながら JavaScript アプリケーションをビルド・実行
- 02開発ワークフロー内でスクリプトを迅速にプロトタイプ化・実行
- 03CI/CD パイプラインに包括的なビルド・テストステップを統合
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にbun --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
Bun
ドキュメントを読む →
Bunとは?
Bunは、JavaScriptおよびTypeScriptアプリ向けのオールインワンツールキットです。bunという単一の実行ファイルとして提供されます。
その中核となるのは、Node.jsのドロップイン代替として設計された高速なJavaScriptランタイム、_Bunランタイム_です。Rustで記述され、内部ではJavaScriptCoreを利用しているため、起動時間とメモリ使用量を大幅に削減します。
bun run index.tsx # TS and JSX supported out-of-the-box
bunコマンドラインツールには、テストランナー、スクリプトランナー、Node.js互換のパッケージマネージャーも実装されています。開発に1,000個のnode_modulesを使う代わりに、必要なのはbunだけです。Bunに組み込まれたツールは既存の選択肢より大幅に高速で、変更がほとんど、あるいはまったく不要なまま、既存のNode.jsプロジェクトでも利用できます。
bun test # run tests
bun run start # run the `start` script in `package.json`
bun install <pkg> # install a package
bunx cowsay 'Hello, world!' # execute a package
インストール
BunはLinux(x64およびarm64)、macOS(x64およびApple Silicon)、Windows(x64およびarm64)に対応しています。
Linuxユーザー — カーネルバージョン5.6以上を強く推奨しますが、最低要件は5.1です。
x64ユーザー — 「illegal instruction」などのエラーが表示される場合は、CPU要件をご確認ください。
# with install script (recommended)
curl -fsSL https://bun.com/install | bash
# on windows
powershell -c "irm bun.sh/install.ps1 | iex"
# with npm
npm install -g bun
# with Homebrew
brew tap oven-sh/bun
brew install bun
# with Docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun
アップグレード
Bunを最新バージョンにアップグレードするには、次のコマンドを実行します。
bun upgrade
Bunはmainへのコミットごとに、canaryビルドを自動的にリリースします。最新のcanaryビルドにアップグレードするには、次のコマンドを実行します。
bun upgrade --canary
クイックリンク
-
はじめに
-
テンプレート
-
ランタイム
-
パッケージマネージャー
-
バンドラー
-
コンパイラー
-
テストランナー
-
パッケージランナー
-
API
- HTTP サーバー(
Bun.serve) - HTTP ルーティング
- HTTP エラーハンドリング
- HTTP メトリクス
- WebSockets
- Workers
- バイナリデータ
- ストリーム
- ファイル I/O(
Bun.file) - アーカイブ(tar)
- SQLite(
bun:sqlite) - PostgreSQL(
Bun.sql) - Redis(
Bun.redis) - S3 クライアント(
Bun.s3) - FileSystemRouter
- TCP ソケット
- UDP ソケット
- グローバル
- 子プロセス(spawn)
- Cron(
Bun.cron) - WebView
- トランスパイラ(
Bun.Transpiler) - ハッシュ
- 色(
Bun.color) - コンソール
- FFI(
bun:ffi) - C コンパイラ(
bun:fficc) - HTMLRewriter
- Cookie(
Bun.Cookie) - CSRF(
Bun.CSRF) - シークレット(
Bun.secrets) - YAML(
Bun.YAML) - TOML(
Bun.TOML) - JSON5
- JSONL
- Markdown
- 画像処理
- ユーティリティ
- Node-API
- Glob(
Bun.Glob) - Semver(
Bun.semver) - DNS
- fetch API 拡張
- HTTP サーバー(
ガイド
-
デプロイ
-
バイナリ
- Blob を文字列に変換する
- Buffer を Blob に変換する
- Blob を DataView に変換する
- Buffer を文字列に変換する
- Blob を ReadableStream に変換する
- Blob を Uint8Array に変換する
- DataView を文字列に変換する
- Uint8Array を Blob に変換する
- Blob を ArrayBuffer に変換する
- ArrayBuffer を Blob に変換する
- Buffer を Uint8Array に変換する
- Uint8Array を Buffer に変換する
- Uint8Array を文字列に変換する
- Buffer を ArrayBuffer に変換する
- ArrayBuffer を Buffer に変換する
- ArrayBuffer を文字列に変換する
- Uint8Array を DataView に変換する
- Buffer を ReadableStream に変換する
- Uint8Array を ArrayBuffer に変換する
- ArrayBuffer を Uint8Array に変換する
- ArrayBuffer を数値の配列に変換する
- Uint8Array を ReadableStream に変換する
-
エコシステム
- React と JSX を使用する
- Bun で Gel を使用する
- Bun で Prisma を使用する
- Bun で Prisma Postgres を使用する
- Bun アプリに Sentry を追加する
- Discord ボットを作成する
- PM2 で Bun をデーモンとして実行する
- Bun で Drizzle ORM を使用する
- Bun で Upstash Redis を使用する
- Nuxt と Bun でアプリを構築する
- Qwik と Bun でアプリを構築する
- Astro と Bun でアプリを構築する
- Remix と Bun でアプリを構築する
- Vite と Bun でフロントエンドを構築する
- Next.js と Bun でアプリを構築する
- systemd で Bun をデーモンとして実行する
- Hono と Bun で HTTP サーバーを構築する
- SvelteKit と Bun でアプリを構築する
- SolidStart と Bun でアプリを構築する
- TanStack Start と Bun でアプリを構築する
- Elysia と Bun で HTTP サーバーを構築する
- StricJS と Bun で HTTP サーバーを構築する
- Docker で Bun アプリケーションをコンテナ化する
- Express と Bun で HTTP サーバーを構築する
- Drizzle ORM を通じて Neon Postgres を使用する
- React コンポーネントをサーバーサイドレンダリング(SSR)する
- Mongoose と Bun を使用して MongoDB のデータを読み書きする
- Bun で Neon のサーバーレス Postgres を使用する
-
HTMLRewriter
-
HTTP
- HTTP サーバーをホットリロードする
- HTTP サーバーの一般的な使用方法
- シンプルな HTTP サーバーを作成する
- HTTP サーバーで TLS を設定する
- fetch を使用して HTTP リクエストを送信する
- fetch() を使用して HTTP リクエストをプロキシする
- HTTP サーバーのクラスターを起動する
- ファイルを HTTP レスポンスとしてストリーミングする
- Bun で Unix ドメインソケットを使用した fetch
- FormData を使用して HTTP 経由でファイルをアップロードする
- 非同期イテレーターを使用した HTTP サーバーのストリーミング
- Node.js Streams を使用した HTTP サーバーのストリーミング
- Bun でのサーバー送信イベント(SSE)
-
インストール
- 依存関係を追加する
- Git 依存関係を追加する
- ピア依存関係を追加する
- 信頼できる依存関係を追加する
- 開発用依存関係を追加する
- tarball 依存関係を追加する
- オプションの依存関係を追加する
- yarn 互換のロックファイルを生成する
- workspaces を使ってモノレポを設定する
- 別の名前でパッケージをインストールする
- GitHub Actions で Bun を使って依存関係をインストールする
- Artifactory で bun install を使用する
- Bun の lockb ロックファイルを diff するように git を設定する
- bun install のデフォルトの npm レジストリを上書きする
- Azure Artifacts npm レジストリで bun install を使用する
- npm install から bun install に移行する
- bun install で組織スコープ用のプライベートレジストリを設定する
-
プロセス
-
ファイルの読み取り
-
ランタイム
- ファイルを削除する
- シェルコマンドを実行する
- JSON ファイルをインポートする
- TOML ファイルをインポートする
- YAML ファイルをインポートする
- JSON5 ファイルをインポートする
- Bun でタイムゾーンを設定する
- 環境変数を設定する
- インポートパスを再マッピングする
- ディレクトリを削除する
- 環境変数を読み取る
- HTML ファイルをテキストとしてインポートする
- GitHub Actions で Bun をインストールして実行する
- ウェブデバッガーで Bun をデバッグする
- Bun の TypeScript 宣言をインストールする
- VS Code 拡張機能で Bun をデバッグする
- V8 ヒープスナップショットを使用してメモリ使用量を調べる
- 静的なグローバル変数と定数を定義して置き換える
- --define によるビルド時定数
- macOS で単一ファイルの JavaScript 実行可能ファイルにコード署名する
-
ストリーム
- ReadableStream を JSON に変換する
- ReadableStream を Blob に変換する
- ReadableStream を Buffer に変換する
- ReadableStream を文字列に変換する
- ReadableStream を Uint8Array に変換する
- ReadableStream をチャンクの配列に変換する
- Node.js の Readable を JSON に変換する
- ReadableStream を ArrayBuffer に変換する
- Node.js の Readable を Blob に変換する
- Node.js の Readable を文字列に変換する
- Node.js の Readable を Uint8Array に変換する
- Node.js の Readable を ArrayBuffer に変換する
-
テスト
bun testでメソッドをスパイする- Bunテストランナーで早期に終了する
bun testでモック関数を使う- Bunでウォッチモードでテストを実行する
bun testでスナップショットテストを使う- Bunテストランナーでテストをスキップする
- BunでTesting Libraryを使う
bun testでスナップショットを更新する- Bunテストランナーでテストを実行する
- Bunのテストランナーでシステム時刻を設定する
- Bunテストランナーでテストごとのタイムアウトを設定する
- JestからBunのテストランナーに移行する
- Bunとhappy-domでブラウザーDOMテストを書く
- Bunテストランナーでテストを「todo」としてマークする
- Bunテストランナーでテストを複数回再実行する
- Bunテストランナーでコードカバレッジレポートを生成する
- bun testでSvelteコンポーネントをimport、requireし、テストする
- Bunテストランナーでコードカバレッジのしきい値を設定する
- globパターンを使ってテストを選択的に並行実行する
-
ユーティリティ
- UUIDを生成する
- パスワードをハッシュ化する
- HTML文字列をエスケープする
- 現在のBunのバージョンを取得する
- Bunを最新バージョンにアップグレードする
- base64文字列をエンコードおよびデコードする
- gzipでデータを圧縮および展開する
- 指定したミリ秒間スリープする
- コードがBunで実行されているか検出する
- 2つのオブジェクトがディープイコールか確認する
- DEFLATEでデータを圧縮および展開する
- 現在のエントリーポイントの絶対パスを取得する
- 現在のファイルのディレクトリを取得する
- 現在のファイルがエントリーポイントか確認する
- 現在のファイルのファイル名を取得する
- ファイルURLを絶対パスに変換する
- 絶対パスをファイルURLに変換する
- 現在のファイルの絶対パスを取得する
- 実行可能なbinファイルのパスを取得する
-
WebSocket
-
ファイルの書き込み
貢献
Bun への貢献を始めるには、Project > 貢献ガイドを参照してください。
ライセンス
Bun のライセンスに関する情報は、Project > ライセンスページを参照してください。