bun について
bun は、Bun のランタイム、パッケージマネージャー、テストランナー、バンドラー、Node.js 互換性を扱う開発者向けスキルです。プロジェクトの調査から移行、検証までを案内します。
主な機能
- 01Bun 環境とプロジェクト設定の確認
- 02ランタイムとパッケージ管理の手順
- 03テスト、ビルド、Node.js 互換性の解説
- 04対象を絞った検証コマンドの提案
活用シーン
- 01既存プロジェクトへの Bun 導入
- 02インストールやスクリプトの Bun 移行
- 03Bun のバージョンやロックファイル変更の調査
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dobroslavradosavljevic/ skills --skill bunインストール後、Claude Code で/bunを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlreferences/node-compat-config.mdpackage-manager.mdruntime-apis.mdsource-map.mdtest-bundler-build.mdusage-guide.md詳細
Bun
Bun ランタイム、パッケージマネージャー、テストランナー、バンドラー、bunfig.toml、Node 互換性、またはインストールやスクリプトの Bun への移行に関わる作業では、このスキルを使用してください。
スナップショット:[email protected]、@types/[email protected] / [email protected](2026-09-18 に取得、2026-10-01 に再確認済み — 引き続き最新の安定版です)。バージョンが異なる場合は、source-map.md を参照して更新してください。
ワークフロー
- ローカルの Bun 環境を確認します。
bun --version/bun --revision(安定版の系列は 1.4.x です。API が重要な場合は、1.4.2 へのアップグレードにbun upgradeを使用してください)。- ロックファイル:
bun.lock(テキスト形式。lockfileVersionは 2、またはネストされた/バージョン指定のオーバーライドを使う場合は 3)と、旧形式のbun.lockb。 package.jsonのスクリプト、ワークスペース、カタログ、オーバーライド、trustedDependencies、任意のnativeDependencies/ignoreScripts/selfContained。bunfig.toml(プロジェクト用と任意のグローバル設定)、.npmrc、@types/bun、TypeScript 6/7 の"types": ["bun"]。- コードが Bun ネイティブ API(
Bun.serve、Bun.Image、bun:sqlite、…)と Node API(node:*)のどちらを使っているか。
- 日常的な使い方、段階的な導入、トラブルシューティングについては、まず usage-guide.md を参照してください。
- バージョンに差異がある場合、または Redis/SQL/HTTP2/HTTP3/FFI、ロックファイル/リンカー/
globalStore、あるいは 1.3→1.4 のアップグレードに関わる場合は、ドキュメントを更新してください。source-map.md から始めてください。 - 詳細情報の参照先:
- ランタイム API、HTTP、ファイル、シェル、Image/WebView/markdown/cron、SQLite/Redis/S3/SQL:runtime-apis.md。
- インストール、ロックファイル、ワークスペース、信頼設定、bunx、CI、audit/dedupe/prune:package-manager.md。
bun test、bun build、--compile、init/create:test-bundler-build.md。- Node 26 互換性、グローバル、watch/hot、bunfig、1.3→1.4 の破壊的変更:node-compat-config.md。
- 新規に Bun プロジェクトを作成する場合は、Bun ネイティブ API と
bun/bunxコマンドを優先してください。コードベースがすでに Node の構成で、問題なく動作している場合は、Node API を引き続き使用してください。 - 最も適切な範囲に絞った
bunコマンド(bun test、bun run、bun ci、または対象を絞ったBun.serveのスモークテスト)で検証してください。
基本的な判断
- Bun は 1 つのバイナリにまとまった ランタイム + パッケージマネージャー + テストランナー + バンドラー であり、「単に Node を高速化したもの」ではありません。1.4 では、このバイナリが Rust で書き直され、標準ライブラリが拡充されています(Image、WebView、markdown、cron、Terminal、XML/JSON5/JSONL)。
- Bun プロジェクトのコマンドでは、
npm/npx/yarn/pnpmよりbun/bunxを優先してください。 bun.lockをコミットしてください。CI でのインストールにはbun ci(ロックファイルを固定)を使用してください。- 依存パッケージのライフサイクルスクリプトは、信頼済みでない限りデフォルトでブロックされます。ネイティブパッケージ(
sharpなど)を追加した後はbun pm untrustedを確認してください。 - 新しいワークスペースのロックファイルでは、リンカーはデフォルトで isolated(
configVersion: 1)です。旧形式のロックファイルでは hoisted のままです。グローバル仮想ストアはオプトイン方式([install] globalStore = true)で、isolated にのみ適用されます。 - 新しい HTTP サービスには
Bun.serveを優先してください。デフォルトのアイドルタイムアウトは 10 秒です(SSE ではserver.timeout(req, 0)が必要です)。HTTP/2(http2: true)と HTTP/3(http3: true)は実験的機能です。 - Bun を第一に使うコードでは、重い Node クライアントより
bun:sqlite/Bun.SQL/Bun.redis/Bun.Imageを優先してください。 bun --watchはハードリスタートし、bun --hotはソフトリロードします(globalThisは維持されます)。サーバーに適しています。- Bun のフラグは
runより前に指定します。bun run dev --watchではなく、bun --watch run devとします。 Bun.envは起動時点のスナップショットです。実行中に値が変わる場合はprocess.envを優先してください。bun buildは型チェックを行わず、.d.tsも出力しません。型が重要な場合はtscを実行してください。- 1.4 では
bun:ffiはエンジンネイティブです(cstringは通常の文字列です)。本番環境で重要な FFI には Node-API のネイティブアドオンを優先してください。 - 1.3→1.4:Bun が報告する Node.js のバージョンは 26 です(
process.versions.modulesは 147)。bunfig.tomlの文字列は引用符で囲む必要があります。全変更の一覧:node-compat-config.md。
検証
リポジトリで定義されているコマンドを優先してください。重要な Bun の作業では、関連する項目を実施してください。
bun --versionを実行し、ロックファイル、リンカー、globalStoreの想定を確認します。- 対象を絞った
bun test(パスまたは-tパターン)を実行します。CI で必要な場合は、--parallel、カバレッジ、JUnit も使用します。 - ロックファイルを編集した後は、
bun ciまたはbun install --frozen-lockfileを実行します。 bun run <entry>、またはport: 0とfetchを使ったBun.serveでスモークテストを実行します。- ネイティブ依存関係を追加した後は、必要に応じて
bun pm untrustedを実行し、信頼する依存関係を設定します。 bun buildまたは--compileの後は、対象プラットフォームで出力を実行します。- Node 互換性の移行では、Bun で同じテストスイートを実行し、一部対応のモジュールを記録します。
- 1.3 から 1.4 に更新した後は、
NODE_MODULE_VERSION147 用にネイティブアドオンを再ビルドし、bunfig.tomlを引用符で囲み、res.writeHeader()を使用しないようにします。
実施した確認と実施しなかった確認、および残っている Bun のバージョンに関する前提を報告してください。
コメント
Markdown 対応