mcpField
B
bun

bun

github.com/itechmeat開発2388 回インストール2 週間前に更新
リポジトリ

bun について

bunは、JavaScriptとTypeScriptのランタイム、パッケージマネージャー、テストランナー、バンドラーをまとめた開発者向けツールキットです。HTTPサーバー、ストレージ、データベースなどのAPIも備えています。

主な機能

  1. 01JavaScriptとTypeScriptのランタイム
  2. 02パッケージのインストールと管理
  3. 03組み込みテストランナーとバンドラー
  4. 04HTTPとWebSocketのAPI
  5. 05SQLite、S3、Redisへのアクセス

活用シーン

  1. 01ビルド工程なしでTypeScriptを実行
  2. 02プロジェクトの依存関係を導入・管理
  3. 03JavaScriptプロジェクトのテストとバンドル
  4. 04HTTPやWebSocketを使うサービスの構築

インストール

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

$npx skills add https://github.com/itechmeat/llm-code --skill bun

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

同梱ファイル

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

references/
bunfig.md
cc.md
development.md
env.md
fetch.md
file-io.md
file-system-router.md
http-server.md
module-system.md
native-interop.md
networking-low-level.md
nodejs-compat.md
package-manager.md
plugins.md
project-scaffolding.md
redis.md
s3.md
shell.md
spawn.md
sqlite.md
transpiler.md
typescript-jsx.md
utilities.md
websockets.md
webview.md
workers.md

詳細

Bun

ランタイム、パッケージマネージャー、テストランナー、バンドラーを備えたオールインワンの JavaScript/TypeScript ツールキットです。

クイックナビゲーション

トピックリファレンス
パッケージマネージャーreferences/package-manager.md
プロジェクトのセットアップreferences/project-scaffolding.md
開発references/development.md
モジュールシステムreferences/module-system.md
TypeScript と JSXreferences/typescript-jsx.md
設定references/bunfig.md
HTTP サーバーreferences/http-server.md
ブラウザー自動化references/webview.md
WebSocketreferences/websockets.md
ファイル入出力references/file-io.md
SQLitereferences/sqlite.md
S3 ストレージreferences/s3.md
Redisreferences/redis.md
低レベルネットワークreferences/networking-low-level.md
Fetch APIreferences/fetch.md
シェルスクリプトreferences/shell.md
プロセスの起動references/spawn.md
ワーカーreferences/workers.md
ネイティブ FFIreferences/native-interop.md
C/C++ のコンパイルreferences/cc.md
トランスパイラーreferences/transpiler.md
プラグインreferences/plugins.md
FS ルーターreferences/file-system-router.md
環境変数references/env.md
ユーティリティreferences/utilities.md
Node.js 互換性references/nodejs-compat.md

Bun を使う場面

  • ビルド手順なしで TypeScript/JSX を実行する
  • ネイティブルーティングを備えた高速な HTTP サーバー
  • ネイティブ入力イベントを使ったヘッドレスブラウザー自動化
  • SQLite データベース(組み込み、依存関係なし)
  • WebSocket サーバー/クライアント
  • S3 互換ストレージ(AWS、R2、MinIO)
  • Redis によるキャッシュ/パブサブ
  • クロスプラットフォームのシェルスクリプト
  • プロセス内での cron スケジューリング
  • Markdown の解析(v1.3.8 以降)
  • FFI を介したネイティブライブラリ呼び出し

主な利点

  • Node.js より起動が 4 倍高速
  • ネイティブ TypeScript/JSX — tsconfig は不要
  • ESM と CommonJS — どちらもシームレスに動作
  • Web API を標準搭載 — fetch、WebSocket など
  • npm よりインストールが 30 倍高速

クイックスタート

# Run TypeScript directly
bun run index.ts

# Install packages
bun install

# Run package.json script
bun run dev

# Execute package binary
bunx cowsay "Hello"

# Run tests
bun test

# Build for production
bun build ./index.ts --outdir ./dist

# Bundle analysis for LLMs (v1.3.8+)
bun build ./index.ts --metafile-md --outdir ./dist

重要なルール

使わない使う
http.createServer()Bun.serve()
fs.readFileSync()Bun.file().text()
better-sqlite3bun:sqlite
child_process.exec()Bun.$ or Bun.spawn()
dotenv組み込みの .env サポート

リリースの主な変更点(1.4.x)

  • Rust による書き換え:Rust 移植版の初回リリースです。ピーク時のメモリ使用量を削減(負荷時に mimalloc アロケーターにより 13~48%削減)、起動を約 2 倍高速化、アイドル時の CPU 使用率を 5 分の 1 に削減し、Node.js テストスイートの合格テスト数が 1,500 件以上増えました。
  • HTTP/2 と HTTP/3:Bun.serve() は、TLS 上の ALPN によって同じポートで HTTP/1.1 と HTTP/2 を提供します(v1.4.1)。HTTP/3 は http3: true で試験的に利用できます。fetch() では、機能フラグを有効にすると HTTP/2 および HTTP/3 クライアントを使用できます。
  • 静的ディレクトリの提供:routes: { "/static/*": { dir: "./public" } } により、sendfile、ETag、Range、条件付きリクエスト、index.html に対応します。
  • CLI:並行スクリプト実行用の bun run --parallel、パッケージのメンテナンス用の bun audit fix、bun dedupe、bun prune、bun pm diff、bun pm licenses。
  • bun test:--parallel、--isolate、--shard=M/N、--timings、--changed(差分ベース)、--retry、jest.useFakeTimers() に対応しました。
  • bun build:組み込み React Compiler(--react-compiler)、バレルインポートの最適化、export * as と動的な import() によるツリーシェイキング、--min-chunk-size、モジュールのプリロードに対応しました。
  • bun install:--linker=isolated によるグローバル仮想ストア、--offline / --prefer-offline、bun add --catalog、ネストされたオーバーライド、selfContained ワークスペースに対応しました。
  • 新しいランタイム API:Bun.Terminal(PTY)、Bun.Archive(tar)、Bun.JSON5/JSONL/JSONC/XML/TOML パーサー、ストリーミング対応の Bun.write(path, response)、WebSocket.pause()/resume()、crypto.argon2、crypto.subtle の耐量子暗号 ML-DSA/ML-KEM。

リリースの主な変更点(1.3.14)

  • Bun.Image:一般的な形式の画像を組み込みでデコード、変換、エンコードできます。npm 依存関係やネイティブアドオンのビルド手順は不要です。
  • テストワークフロー:1.3.13 系列では、変更ファイルを対象としたテスト実行で、依存関係を考慮したフィルタリングが改善されました。部分的なローカル検証に依存する場合に役立ちます。
  • パッチリリースでのランタイム改良:1.3.13~1.3.14 では、1.3.12 の WebView/cron/Markdown リリース系列を基盤として、互換性とパフォーマンスの改良が続けられています。

リリースの主な変更点(1.3.12)

  • Bun.WebView:macOS では WebKit、すべてのプラットフォームでは CDP 経由の Chrome/Chromium を使用する、ネイティブのヘッドレスブラウザー自動化機能です。
  • Bun.cron() のコールバックモード:重複しない実行、UTC セマンティクス、ホットリロード時のクリーンアップ、Disposable ジョブハンドルに対応した、プロセス内スケジューラーです。
  • ターミナルでの Markdown:bun ./file.md と Bun.markdown.ansi() により、ターミナルネイティブのレンダリングを第一級のワークフローとして利用できます。
  • ネットワーク/ランタイム:UDP エラー/切り捨ての処理、Node 互換の Unix ソケットのライフサイクル、プロキシトンネルの再利用、Bun.serve() の接続受付/パフォーマンスの改善。

基本的なレシピ

HTTP サーバー
Bun.serve({
  port: 3000,
  fetch(req) {
    const url = new URL(req.url);
    if (url.pathname === "/api/data") {
      return Response.json({ ok: true });
    }
    return new Response("Not Found", { status: 404 });
  },
});
ファイル操作
// Read
const content = await Bun.file("data.txt").text();

// Write
await Bun.write("output.txt", "Hello World");

// JSON
const config = await Bun.file("config.json").json();
SQLite
import { Database } from "bun:sqlite";

const db = new Database("app.db");
db.run("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)");

const insert = db.prepare("INSERT INTO users (name) VALUES (?)");
insert.run("Alice");

const users = db.query("SELECT * FROM users").all();
WebSocket サーバー
Bun.serve({
  fetch(req, server) {
    if (server.upgrade(req)) return;
    return new Response("Upgrade failed", { status: 400 });
  },
  websocket: {
    message(ws, message) {
      ws.send(`Echo: ${message}`);
    },
  },
});
シェルコマンド
import { $ } from "bun";

// Simple command
const files = await $`ls -la`.text();

// With variables (auto-escaped)
const name = "my file.txt";
await $`cat ${name}`;

// Piping
await $`cat data.csv | grep "pattern" | wc -l`;
S3 ストレージ
import { s3 } from "bun";

// Upload
await s3.file("uploads/doc.pdf").write(data);

// Download
const content = await s3.file("uploads/doc.pdf").text();

// Presigned URL
const url = s3.presign("uploads/doc.pdf", { expiresIn: 3600 });
Redis
import { redis } from "bun";

await redis.set("key", "value");
const value = await redis.get("key");
await redis.expire("key", 3600);
テスト
import { expect, test, describe } from "bun:test";

describe("math", () => {
  test("2 + 2 = 4", () => {
    expect(2 + 2).toBe(4);
  });
});

設定(bunfig.toml)

[run]
watch = true

[install]
registry = "https://registry.npmjs.org"

[test]
coverage = true

環境変数

# .env files loaded automatically
DATABASE_URL=postgres://localhost/mydb
// Access
Bun.env.DATABASE_URL;
process.env.DATABASE_URL;
import.meta.env.DATABASE_URL;

リンク

コメント