L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

bun-runtime

bun-runtime

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

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la 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 enregistrées