本文へスキップ

Bun 1.4.4がbun fmtを追加、Prettier互換のフォーマッター

2026年10月22日公開のBun(バン)1.4.4は、Prettier(プリティア)互換のフォーマッターbun fmtを追加しました。BunによるとPrettier自身のリポジトリのチェックはPrettierより286倍速いとしています。

著者 Tech AI Wire Team

4 分で読めます

Jarred Sumnerによる2026年10月22日付のBunブログ記事「Bun v1.4.4」。インストールとアップグレードのコマンドが見えます。

数字で見る

bun fmt --check on Prettier's repo, per Bun
59.7 ms
Prettier 3.9.10 on the same repo
17.1 s
faster bun check on MUI docs than Bun 1.4.3
7.8x

2026年10月22日に公開されたBun 1.4.4は、Bunのランタイムに組み込まれたコードフォーマッターbun fmtを追加しました。既存のPrettierの設定をそのまま読み込みます。Bunによると、Prettier自身のリポジトリでbun fmt --checkは59.7ミリ秒で終わり、Prettierでは17.1秒かかります。今回のリリースではbun checkも速くなり、Yarn Berryのロックファイルも移行できるようになりました。

Bunは、パッケージマネージャー、テストランナー、型チェッカーも備えたJavaScriptランタイムです。フォーマッターはコードを一貫したスタイルに書き直すツールで、チームがスペースや改行の書き方で揉めずに済みます。

bun fmtの機能

Jarred SumnerによるBun v1.4.4のリリースノートによると、bun fmtは広く使われているJavaScriptのフォーマッターPrettierを移植したものです。プロジェクトに既にある次の設定ファイルを読み込みます。

  • .prettierrc*、prettier.config.*、package.jsonのprettierキー
  • .editorconfigと.prettierignore
  • 別のフォーマッターであるoxfmtの設定
  • bunfig.tomlの[fmt]セクション

JavaScript、TypeScript、JSX、CSS、SCSS、HTML、Vue、Svelte、JSON、YAML、TOML、Markdown、MDX、GraphQLなどを整形できます。Tailwindのクラスの並べ替え、package.jsonのキーの並べ替え、Svelteへの対応は組み込みなので、これらのPrettierプラグインは不要です。importの並べ替えも組み込まれていますが、標準ではオフです。

Astroのように、まだPrettierのプラグインが必要な言語では、プロジェクトにインストール済みのPrettierに処理を任せます。対応していないプラグインがあると、bun fmtはエラーを表示し、該当ファイルを飛ばして終了コード2で終わります。従来のbun formatコマンドは、引き続きプロジェクト独自のformatスクリプトを実行します。

Bunが示したベンチマーク

以下の数字はBun自身によるもので、第三者による検証はされていません。

テストbun fmt比較
Prettierのリポジトリ、2,616ファイル59.7ミリ秒、48MBPrettier 3.9.10:17.1秒、459MB(286倍)
vitest、date-fns、monkeytype、h3Prettier 3.9.9より234〜425倍速い
vite(独自の設定)65.2ミリ秒oxfmt 0.74.0:406.7ミリ秒(6.2倍)
fumadocs(独自の設定)44.6ミリ秒oxfmt 0.74.0:1,395ミリ秒(31倍)

記事の要約ではbun fmtはoxfmtより3〜6倍速いとしていますが、同じ記事のfumadocsの行は31倍を示しています。出力については、Prettierの整形テスト9,731件のうち9,648件、つまり99.1%が一致したとしています。Prettierと一般的なプラグインの組み合わせと比べると、JavaScriptとTypeScriptの出力の97.9%が同一でした。

AICoderは、このフォーマッターが10月12日にBunのmainブランチに入った時点で、別のテスト結果を伝えていました。VS Codeのソースの整形チェックにかかったCPU時間は、Bunで2.9秒、Prettier 3.9.9で295秒でした。

bun checkとbun installの高速化

今回のリリースは、Bun 1.4.3がbun checkを追加、より高速なTypeScriptの型チェッカーで登場した型チェッカーをさらに改良しています。MUIのドキュメントでは、bun checkの所要時間が10.28秒から1.31秒に縮み、最大メモリーは11.2GBから1.3GBに減りました。遅くなったプロジェクトもあり、Bun自身のsrc/jsは0.11秒から0.20秒になりました。

bun installは、Yarn 2以降(いわゆるYarn Berry)のロックファイルをbun.lockに移行し、固定されたバージョンを保ちます。Bun 1.4.3が扱えたのはYarn v1だけでした。ダウンロードに失敗したときは、間隔を広げながら最大5回まで再試行します。Sumnerは「Bun v1.4.3では5回の再試行がすべて5ミリ秒以内に起きていたため、レジストリーが少し止まっただけでインストールが失敗していました」と書いています。

このリリースでは271件の問題が修正され、TLS、WebSocket、データベースクライアント、パッケージマネージャーのセキュリティ修正も含まれます。ただし記事は詳細を示していません。Bun.SQLはクエリ1件あたりのクライアントのCPU使用量が最大48%減ったとしています。

確認すべき互換性のない変更

記事では、動作が変わる点がいくつか本文中に挙げられています。

  • {1..3}や!(g)/a.tsのようなglobのパターンは、文字どおりの文字列ではなくパターンとして扱われるようになりました。
  • bun publishは--tagなしではプレリリース版を公開しなくなり、--provenanceはエラーになります。
  • Bun.hash()はnullやundefinedをハッシュ化せず、例外を投げるようになりました。
  • TLSサーバーがクライアント証明書を求めるのは、requestCert: trueを設定したときだけになりました。
  • アップグレード後、bun testのカバレッジの「% Lines」が下がることがあるので、coverageThresholdを確認してください。

開発者にとっての意味

BunはPrettier互換のフォーマッターを、多くのチームがすでに使っているツールの中に組み込みました。JavaScriptのプロジェクトから依存関係を1つ減らせます。

  • 切り替える前にCIで試す。 ブランチでbun fmt --checkを実行し、結果をPrettierと比べてください。出力の97.9%が同一なので、変わるファイルは少数のはずです。
  • プラグインを確認する。 対応していないPrettierのプラグインがあると、bun fmtは終了コード2で終わり、CIのジョブが失敗します。
  • セキュリティ修正のためにアップグレードする。 bun upgradeを実行してください。BunはTLSとWebSocketの修正を挙げており、これはBunで動くサーバーにとって特に重要です。
  • 先に互換性のない変更を確認する。 globの動作、bun publishのルール、TLSのクライアント証明書がすべて変わりました。展開する前に、1.4.4でテストを実行してください。

出典

  1. Bun v1.4.4 - Bun Blog
  2. Bun adds built-in bun lint and bun fmt: reads ESLint/Prettier configs, 1,021 rules, 2.9s vs Prettier's 295s CPU on vscode format check - AICoder

関連記事

「Wednesday, October 21, 2026 Security Releases」と題したNode.jsのブログ記事。目次に修正対象のCVEが並んでいます。
開発ツール

Node.js 26.12.1、24.22.1、22.23.4が脆弱性10件を修正

Node.js(ノード・ジェイエス)は2026年10月21日に脆弱性10件を修正しました。うち4件は深刻度「高」で、リモートからのコード実行につながりうるBrotliデコーダーのバグも含まれます。