인터페이스는 현지화되어 있으며, Skill 소개와 설명 문서는 선택한 언어로 AI가 자동 번역합니다. 코드·명령어·경로·전문 용어는 원문을 유지하며 원작자 문서가 우선합니다.
Skills 둘러보기
생산성 및 협업 · SKILL.md

bun-runtime

bun-runtime

ランタイムとしてのBun、パッケージマネージャー、バンドラー、テストランナー。Bun対Nodeを選択する場合、移行メモ、Vercelサポート。

Independent GitHub snapshot · Automated classification · Original documentation governs

Skill 문서

GitHub

name: bun-runtime description: ランタイムとしてのBun、パッケージマネージャー、バンドラー、テストランナー。Bun対Nodeを選択する場合、移行メモ、Vercelサポート。 origin: ECC

Bunランタイム

Bunは高速なオールインワンJavaScriptランタイムとツールキット:ランタイム、パッケージマネージャー、バンドラー、テストランナー。

使用時期

  • Bunを好む:新しいJS/TSプロジェクト、インストール/実行速度が重要なスクリプト、Bunランタイムでのデプロイメント、単一のツールチェーン(実行+インストール+テスト+ビルド)が必要な場合。
  • Nodeを好む:最大のエコシステム互換性、ノードを仮定するレガシーツール、またはある依存関係が既知のBun問題がある場合。

使用時期:Bunを採用、Nodeから移行、Bunスクリプト/テストを書いたりデバッグしたり、Vercelまたは他のプラットフォームでBunを構成する場合。

動作方法

  • バージョンの基準:以下のガイダンスはBun 1.4.xを対象としています。CLIフラグはリリース間で変更されることがあるため、フラグ名に依存する前にbun --versionで実際のバージョンを確認してください。
  • ランタイム:ドロップイン互換のNodeランタイム(JavaScriptCore上に構築)。Bun 1.4以降、ランタイム自体はRustで実装されています(Zigから移行)。100%Node互換ではありません — 一部のネイティブアドオン、あまり一般的でないnode:内部APIや、Node固有の内部動作に依存するパッケージは動作しないことがあります。本番環境で依存する前に検証してください。
  • パッケージマネージャー:Bunにはパッケージマネージャーが含まれています。インストール性能はプロジェクト、ネットワーク状況、キャッシュの状態によって変わります。ロックファイルは現行のBunではbun.lock(テキスト)がデフォルトです。古いバージョンはbun.lockb(バイナリ)を使用しており、Bunは移行のため現在もこれを読み込めますが、新規プロジェクトはbun.lockを使うべきです。
  • バンドラー:アプリとライブラリ用の組み込みバンドラーとトランスパイラー。
  • テストランナー:Jest様のAPIを備えた組み込みbun test。

Nodeからの移行:node script.jsをbun run script.jsまたはbun script.jsに置き換えます。npm installの代わりにbun installを実行します。ほとんどのパッケージは機能します。npm スクリプトにはbun runを使用します。bun xをnpxスタイルの1回限りの実行に使用します。Nodeの組み込みはサポートされています。パフォーマンスの向上のため、Bun APIが存在する場合は優先してください。

パッケージ・ワークスペースコマンド:bun add <pkg> / bun remove <pkg> / bun update [pkg]で依存関係を管理し、bun outdatedで古い依存関係を一覧表示します。bun pm lsはロックファイルを使ってプロジェクトの依存関係と解決済みバージョンを表示し、--allを付けると推移的な依存関係も含めます。インストール済みファイルの内容の整合性を検証するものではありません。bun auditはbun.lock内のパッケージ名とバージョンを使ってレジストリの脆弱性情報を照会し、package.json、bun.lock、node_modulesは変更しません。プライベートなパッケージ情報を送信する前に、承認済みの送信先を確認してください。スコープ付きレジストリにアドバイザリエンドポイントがないパッケージはスキップされ、終了コードに影響しません。bun audit fixは依存関係を更新・インストールし、ロックファイルとインストール済みパッケージ、場合によっては直接依存の固定バージョンも変更します。適用されるライフサイクルスクリプトも含む、変更を伴うインストール操作としてレビューしてください。bun dedupeは重複インストールを解消し、bun pruneは参照されなくなったパッケージを削除します。モノレポはルートのpackage.jsonのworkspaces配列を使用します(npm/yarnと同じ規約)。特定のワークスペースでスクリプトを実行するにはbun run --filter <pkg-name> <script>を使用します。

組み込みAPI:依存関係を追加する前にこれらを検討してください — ファイルI/OにはBun.file / Bun.write、組み込みSQLiteデータベースにはbun:sqlite、HTTP/WebSocketサーバーにはBun.serve、SQLデータベースにはBun.sql、RedisにはBun.redis、S3互換オブジェクトストレージにはBun.S3Client。その他の新機能は1.4リリースノートを参照してください。

Vercel:vercel.jsonでbunVersion: "1.4.x"を設定し、Bun 1.4(Rustランタイム)を使用してください。詳細はVercelのBunランタイムドキュメントを参照。ビルド:bun run buildまたはbun build ./src/index.ts --outdir=dist。インストール:再現可能なデプロイの場合はbun install --frozen-lockfile。

参考:Bun 1.4 リリースノート。

例

実行とインストール

# 依存関係をインストール(bun.lockを作成/更新)
bun install

# スクリプトまたはファイルを実行
bun run dev
bun run src/index.ts
bun src/index.ts

スクリプトとenv

bun run --env-file=.env dev
FOO=bar bun run script.ts

テスト

bun test
bun test --watch

Bun 1.4でCIに利用できるオプションには、影響を受けるテストを選ぶbun test --changed[=<ref>]、ファイルごとのグローバル環境を使うbun test --isolate、ワーカープロセスで実行するbun test --parallel[=<n>]、CIを分割するbun test --shard=<n>/<count>があります。--isolateは同じプロセス内でファイルごとに新しいJavaScriptグローバル環境を作り、文書化されたファイル単位のリソースをクリーンアップします。プロセスやセキュリティのサンドボックスではありません。--parallelではデフォルトで有効です。--timings=<file>はスケジューリング用に過去の所要時間を読み込み、--update-timingsは所要時間を記録します。例:bun test --parallel --timings=./test-timings.json --update-timings。複数シャードのタイミングファイルのパスを決める前に、インストール済みバージョンのヘルプとドキュメントを確認してください。

// test/example.test.ts
import { expect, test } from "bun:test";

test("add", () => {
  expect(1 + 2).toBe(3);
});

ランタイムAPI

const file = Bun.file("package.json");
const json = await file.json();

Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Hello");
  },
});

ベストプラクティス

  • 再現可能なインストールのため、ロックファイル(bun.lock)をコミットする。
  • スクリプトにはbun runを優先する。TypeScriptの場合、Bunは.tsをネイティブに実行する。
  • 依存関係を最新に保つ。Bunとそのエコシステムは急速に進化している。
저장한 Skills