mcpField
B
bun-runtime

bun-runtime

github.com/oakoss開発2194 回インストール12 週間前に更新
リポジトリ

bun-runtime について

Bunを使うJavaScript・TypeScript開発者向けのリファレンススキルです。ランタイムAPI、パッケージ管理、バンドル、テストをまとめています。

主な機能

  1. 01JavaScript、TypeScript、JSXの実行
  2. 02パッケージとスクリプトの管理
  3. 03コードのバンドルとテスト
  4. 04ファイルおよびHTTPサーバーAPI
  5. 05SQLiteとパスワードハッシュ

活用シーン

  1. 01BunでTypeScriptプロジェクトを実行
  2. 02HTTPサービスの構築とファイル処理
  3. 03組み込みツールでのバンドルとテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/oakoss/agent-skills --skill bun-runtime

インストール後、Claude Code で/bun-runtimeを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
bundler.md
package-management.md
runtime-apis.md
testing.md

詳細

Bun Runtime

概要

Bun は、高速なパッケージマネージャー、バンドラー、テストランナー、Node.js 互換 API を備えたオールインワンの JavaScript および TypeScript ランタイムです。別途コンパイルすることなく、TypeScript と JSX をネイティブに実行できます。

使用する場面: 高速なサーバーサイド JavaScript、TypeScript を中心とするプロジェクト、起動パフォーマンス向上のために Node.js を置き換える場合、組み込みの SQLite、パスワードのハッシュ化、ファイル I/O、HTTP サーバー、バンドル、外部ツールを使わないテスト。

使用しない場面: Node.js エコシステムとの完全な互換性が必要なプロジェクト(一部のネイティブモジュールは未対応)、実績を積んだ Node.js の安定性が必要な本番環境、またはランタイムを必要としないブラウザー専用コード。

クイックリファレンス

パターンAPI主なポイント
HTTP サーバーBun.serve({ routes, fetch })ルートベース、静的/動的ルート、メソッドごとのハンドラー
ファイル読み込みBun.file(path)遅延読み込みの BunFile(Blob)、.text()、.json()、.stream()
ファイル書き込みBun.write(dest, data)string、Blob、Response、BunFile を受け付けます
SQLitebun:sqlite の new Database(path)同期クエリ、プリペアドステートメント、WAL モード
パスワードのハッシュ化Bun.password.hash(pw)デフォルトは Argon2id、bcrypt オプション、非同期/同期の両方に対応
パスワードの検証Bun.password.verify(pw, hash)ハッシュ形式からアルゴリズムを自動判別
バンドラーBun.build({ entrypoints, outdir })ツリーシェイキング、コード分割、プラグイン、複数のターゲット
テストランナーimport { test, expect } from "bun:test"Jest 互換、モック、スナップショット、ウォッチモード
パッケージのインストールbun install高速なロックファイル解決、npm 互換
パッケージの追加bun add <pkg>開発用には -d、グローバル用には -g
スクリプトの実行bun run <script>package.json のスクリプトまたはファイルを直接実行します
バイナリの実行bunx <pkg>npx と同様に、インストールせずに実行します
S3 クライアントnew S3Client(opts) / s3.file(key)S3 互換ストレージ用の組み込みクライアント
HTML のインポートimport page from './index.html'フルスタック:HTML をルートハンドラーとしてインポート

よくある間違い

間違い正しいパターン
routes を使わず、fetch ハンドラーのみを使用する静的/動的ルーティングには routes オブジェクトを使い(Bun v1.2.3 以降)、fetch はフォールバックとして使用します
Bun.write() に await を付け忘れるBun.write() は非同期のため、必ず await を付けます
Bun.file(path).text() を await なしで使用する.text()、.json()、.arrayBuffer() はすべて Promise を返します
WAL モードを使わずに SQLite データベースを作成する並行読み取りのために WAL を有効にします:db.exec("PRAGMA journal_mode = WAL")
CI で --frozen-lockfile を付けずに bun install を使う再現可能な CI ビルドには bun install --frozen-lockfile を使います
Bun のテストで jest のグローバルをインポートする@jest/globals や vitest ではなく、bun:test からインポートします
node_modules/.bin/ を直接使用するbin パスを参照するのではなく、bunx または bun run を使います
失敗時に Bun.build() が例外をスローすると想定するresult.success の真偽値を確認します。エラーは result.logs に含まれます
Bun にデプロイする際に --target node を使用するBun 固有の最適化とバイトコードには --target bun を使います
リクエストハンドラーで同期的にパスワードをハッシュ化するサーバーでは非同期版の await Bun.password.hash() を使います

委任

  • プロジェクトのひな形作成:Explore エージェントを使用します
  • パフォーマンスのプロファイリング:Task エージェントを使用します
  • コードレビュー:code-reviewer エージェントに委任します

typescript-patterns スキルが利用可能な場合は、高度な TypeScript の型付けに関する質問をそのスキルに委任してください。

参考資料

コメント