Bun の動作は、設定ファイル bunfig.toml を使用して設定できます。
一般的に、Bun は package.json や tsconfig.json などの既存の設定ファイルに依存して動作を設定します。bunfig.toml は Bun 固有のものを設定するためにのみ必要です。このファイルはオプションであり、Bun はこれなしでそのまま動作します。
グローバル vs ローカル
一般的に、bunfig.toml ファイルを package.json と一緒にプロジェクトルートに追加することをお勧めします。
Bun をグローバルに設定するには、以下のパスのいずれかに .bunfig.toml ファイルを作成することもできます。
$HOME/.bunfig.toml$XDG_CONFIG_HOME/.bunfig.toml
グローバルとローカルの両方の bunfig が検出された場合、結果は浅くマージされ、ローカルがグローバルを上書きします。CLI フラグは、該当する場合は bunfig 設定を上書きします。
ランタイム
Bun のランタイム動作は、bunfig.toml ファイルのトップレベルフィールドを使用して設定されます。
preload
ファイルまたはスクリプトを実行する前に実行するスクリプト/プラグインの配列。
# `bun run` でファイルまたはスクリプトを実行する前に実行するスクリプト
# このリストに追加してプラグインを登録します
preload = ["./preload.ts"]jsx
Bun が JSX をどのように処理するかを設定します。これらのフィールドは tsconfig.json の compilerOptions でも設定できますが、非 TypeScript プロジェクトのためにここでもサポートされています。
jsx = "react"
jsxFactory = "h"
jsxFragment = "Fragment"
jsxImportSource = "react"これらのフィールドの詳細については、tsconfig ドキュメントを参照してください。
smol
smol モードを有効にします。これにより、パフォーマンスを犠牲にしてメモリ使用量を削減します。
# パフォーマンスを犠牲にしてメモリ使用量を削減
smol = truelogLevel
ログレベルを設定します。これは "debug"、"warn"、または "error" のいずれかになります。
logLevel = "debug" # "debug" | "warn" | "error"define
define フィールドを使用すると、特定のグローバル識別子を定数式に置き換えることができます。Bun は識別子の使用法を式に置き換えます。式は JSON 文字列である必要があります。
[define]
# "process.env.bagel" の使用法を文字列 `lox` に置き換えます。
# 値は JSON として解析されますが、シングルクォート文字列がサポートされ、`'undefined'` は JS で `undefined` になります。
# これは将来のリリースで通常の TOML に変更される可能性があります。これは CLI 引数解析の名残りです。
"process.env.bagel" = "'lox'"loader
Bun がファイル拡張子をローダーにどのようにマッピングするかを設定します。これは、Bun でネイティブにサポートされていないファイルを読み込む場合に役立ちます。
[loader]
# .bagel ファイルがインポートされた場合、tsx ファイルとして扱います
".bagel" = "tsx"Bun は以下のローダーをサポートしています。
jsxjststsxcssfilejsontomlwasmnapibase64dataurltext
telemetry
telemetry フィールドはアナリティクスの有効/無効に使用されます。デフォルトでは、テレメトリは有効です。これは DO_NOT_TRACK 環境変数と同等です。
現在、私たちはテレメトリを収集しておらず、この設定は匿名のクラッシュレポートの有効/無効にのみ使用されますが、将来的にはどの Bun API が最も使用されているかや bun build にどのくらい時間がかかるかなどの情報を収集する予定です。
telemetry = falseconsole
コンソール出力の動作を設定します。
console.depth
console.log() オブジェクト検査のデフォルトの深さを設定します。デフォルトは 2 です。
[console]
depth = 3これは、コンソール出力でオブジェクトがどの程度深くネストされて表示されるかを制御します。より高い値はより多くのネストされたプロパティを表示しますが、複雑なオブジェクトでは詳細な出力を生成する可能性があります。この設定は --console-depth CLI フラグで上書きできます。
テストランナー
テストランナーは bunfig.toml の [test] セクションで設定されます。
[test]
# ここに設定test.root
テストを実行するルートディレクトリ。デフォルトは . です。
[test]
root = "./__tests__"test.preload
トップレベルの preload フィールドと同じですが、bun test にのみ適用されます。
[test]
preload = ["./setup.ts"]test.smol
トップレベルの smol フィールドと同じですが、bun test にのみ適用されます。
[test]
smol = truetest.coverage
カバレッジレポートを有効にします。デフォルトは false です。上書きするには --coverage を使用します。
[test]
coverage = falsetest.coverageThreshold
カバレッジしきい値を指定します。デフォルトでは、しきい値は設定されていません。テストスイートがこのしきい値に達しないか、超えない場合、bun test は失敗を示すために 0 以外の終了コードで終了します。
[test]
# 90% の行レベルと関数レベルのカバレッジを必要とする場合
coverageThreshold = 0.9行ごと、関数ごと、ステートメントごとのカバレッジに対して異なるしきい値を指定できます。
[test]
coverageThreshold = { line = 0.7, function = 0.8, statement = 0.9 }test.coverageSkipTestFiles
カバレッジ統計の計算時にテストファイルをスキップするかどうか。デフォルトは false です。
[test]
coverageSkipTestFiles = falsetest.coveragePathIgnorePatterns
グロブパターンを使用して、特定のカバレッジレポートから特定のファイルまたはファイルパターンを除外します。単一の文字列パターンまたはパターンの配列にできます。
[test]
# 単一パターン
coveragePathIgnorePatterns = "**/*.spec.ts"
# 複数のパターン
coveragePathIgnorePatterns = [
"**/*.spec.ts",
"**/*.test.ts",
"src/utils/**",
"*.config.js"
]test.coverageReporter
デフォルトでは、カバレッジレポートはコンソールに出力されます。CI 環境や他のツールでの永続的なカバレッジレポートには lcov を使用します。
[test]
coverageReporter = ["text", "lcov"] # デフォルト ["text"]test.coverageDir
カバレッジレポートの保存先パスを設定します。これは永続的な coverageReporter(lcov など)に対してのみ機能することに注意してください。
[test]
coverageDir = "path/to/somewhere" # デフォルト "coverage"test.randomize
テストをランダムな順序で実行します。デフォルトは false です。
[test]
randomize = trueこれは、毎回異なる順序でテストを実行することで、テストの相互依存性に関連するバグを捕捉するのに役立ちます。seed と組み合わせると、ランダムな順序が再現可能になります。
--randomize CLI フラグを指定すると、この設定が上書きされます。
test.seed
テストランダム化のランダムシードを設定します。このオプションは randomize が true であることを必要とします。
[test]
randomize = true
seed = 2444615283シードを使用すると、実行間でランダム化されたテスト順序を再現できるため、不安定なテストのデバッグに役立ちます。ランダム化が有効な状態でテストの失敗が発生した場合、同じシードを使用して正確なテスト順序を再現できます。
--seed CLI フラグを指定すると、この設定が上書きされます。
test.rerunEach
各テストファイルを指定された回数再実行します。デフォルトは 0(1 回実行)です。
[test]
rerunEach = 3これは、不安定なテストや非決定的な動作を捕捉するのに役立ちます。各テストファイルは指定された回数実行されます。
--rerun-each CLI フラグを指定すると、この設定が上書きされます。
test.concurrentTestGlob
一致するテストファイルを自動的に実行するためのグロブパターンを指定し、並行テスト実行を有効にします。このパターンに一致するテストファイルは、--concurrent フラグが渡されたかのように動作し、そのファイル内のすべてのテストを並行して実行します。
[test]
concurrentTestGlob = "**/concurrent-*.test.ts"これは以下に役立ちます。
- テストスイートを並行実行に徐々に移行する
- ユニットテストを順次実行したまま、統合テストを並行して実行する
- 順次実行を必要とするテストから高速な並行テストを分離する
--concurrent CLI フラグを指定すると、この設定が上書きされます。
test.onlyFailures
有効にすると、出力に失敗したテストのみが表示されます。これにより、合格したテストを非表示にして大規模なテストスイートのノイズを減らすのに役立ちます。デフォルトは false です。
[test]
onlyFailures = trueこれは bun test を実行する際に --only-failures フラグを使用するのと同等です。
test.reporter
テストレポーターの設定を構成します。
test.reporter.dots
ドットレポーターを有効にします。これは各テストのドットを表示するコンパクトな出力を表示します。デフォルトは false です。
[test.reporter]
dots = truetest.reporter.junit
JUnit XML レポートを有効にして、出力ファイルパスを指定します。
[test.reporter]
junit = "test-results.xml"これにより、CI システムや他のツールで使用できる JUnit XML レポートが生成されます。
パッケージマネージャー
パッケージ管理は複雑な問題です。さまざまなユースケースをサポートするために、bun install の動作は [install] セクションで設定できます。
[install]
# ここに設定install.optional
オプションの依存関係をインストールするかどうか。デフォルトは true です。
[install]
optional = trueinstall.dev
開発依存関係をインストールするかどうか。デフォルトは true です。
[install]
dev = trueinstall.peer
ピア依存関係をインストールするかどうか。デフォルトは true です。
[install]
peer = trueinstall.production
bun install が「プロダクションモード」で実行されるかどうか。デフォルトは false です。
プロダクションモードでは、"devDependencies" はインストールされません。CLI で --production を使用してこの設定を上書きできます。
[install]
production = falseinstall.exact
package.json で正確なバージョンを設定するかどうか。デフォルトは false です。
デフォルトでは、Bun はキャレット範囲を使用します。パッケージの latest バージョンが 2.4.1 の場合、package.json のバージョン範囲は ^2.4.1 になります。これは、2.4.1 から(ただし 3.0.0 は含まない)までの任意のバージョンが許容されることを示します。
[install]
exact = falseinstall.saveTextLockfile
false の場合、bun install を実行してロックファイルが存在しないときに、テキストベースの bun.lock ファイルの代わりにバイナリ bun.lockb を生成します。
デフォルトは true(Bun v1.2 以降)。
[install]
saveTextLockfile = falseinstall.auto
Bun のパッケージ自動インストール動作を設定します。デフォルトは "auto" — node_modules フォルダが見つからない場合、Bun は実行中に依存関係を自動的にその場でインストールします。
[install]
auto = "auto"有効な値は次のとおりです。
| 値 | 説明 |
|---|---|
"auto" | ローカルの node_modules が存在する場合はそこからモジュールを解決します。それ以外の場合、実行中に依存関係を自動的にインストールします。 |
"force" | node_modules が存在しても、常に依存関係を自動的にインストールします。 |
"disable" | 依存関係を自動的にインストールしません。 |
"fallback" | まずローカルの node_modules を確認し、見つからないパッケージを自動的にインストールします。bun -i で CLI からこれを有効にできます。 |
install.frozenLockfile
true の場合、bun install は bun.lock を更新しません。デフォルトは false です。package.json と既存の bun.lock が一致しない場合、エラーになります。
[install]
frozenLockfile = falseinstall.dryRun
bun install が実際に依存関係をインストールするかどうか。デフォルトは false です。true の場合、すべての bun install コマンドで --dry-run を設定するのと同等です。
[install]
dryRun = falseinstall.globalDir
Bun がグローバルにインストールされたパッケージを配置するディレクトリを設定します。
環境変数:BUN_INSTALL_GLOBAL_DIR
[install]
# `bun install --global` がパッケージをインストールする場所
globalDir = "~/.bun/install/global"install.globalBinDir
Bun がグローバルにインストールされたバイナリと CLI をインストールするディレクトリを設定します。
環境変数:BUN_INSTALL_BIN
[install]
# グローバルにインストールされたパッケージバイナリがリンクされる場所
globalBinDir = "~/.bun/bin"install.registry
デフォルトのレジストリは https://registry.npmjs.org/ です。これは bunfig.toml でグローバルに設定できます。
[install]
# デフォルトのレジストリを文字列として設定
registry = "https://registry.npmjs.org"
# トークンを設定
registry = { url = "https://registry.npmjs.org", token = "123456" }
# ユーザー名/パスワードを設定
registry = "https://username:password@registry.npmjs.org"install.linkWorkspacePackages
ワークスペースパッケージのリンク方法を設定するには、install.linkWorkspacePackages オプションを使用します。
ワークスペースパッケージをモノレポルートからそれぞれの node_modules ディレクトリにリンクするかどうか。デフォルトは true です。
[install]
linkWorkspacePackages = trueinstall.scopes
特定のスコープ(例:@myorg/<package>)のレジストリを設定するには、install.scopes を使用します。$variable 表記で環境変数を参照できます。
[install.scopes]
# 文字列としてのレジストリ
myorg = "https://username:password@registry.myorg.com/"
# ユーザー名/パスワード付きのレジストリ
# 環境変数を参照できます
myorg = { username = "myusername", password = "$npm_password", url = "https://registry.myorg.com/" }
# トークン付きのレジストリ
myorg = { token = "$npm_token", url = "https://registry.myorg.com/" }install.ca と install.cafile
CA 証明書を設定するには、install.ca または install.cafile を使用して CA 証明書ファイルへのパスを指定します。
[install]
# 文字列としての CA 証明書
ca = "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
# CA 証明書ファイルへのパス。ファイルには複数の証明書を含めることができます。
cafile = "path/to/cafile"install.cache
キャッシュの動作を設定します。
[install.cache]
# キャッシュに使用するディレクトリ
dir = "~/.bun/install/cache"
# true の場合、グローバルキャッシュから読み込みません。
# Bun は引き続き node_modules/.cache に書き込む可能性があります
disable = false
# true の場合、常にレジストリから最新バージョンを解決します
disableManifest = falseinstall.lockfile
ロックファイルの動作を設定するには、install.lockfile セクションを使用します。
bun install でロックファイルを生成するかどうか。デフォルトは true です。
[install.lockfile]
save = truebun.lock と一緒に非 Bun ロックファイルを生成するかどうか。(bun.lock は常に作成されます。)現在、"yarn" のみがサポートされている値です。
[install.lockfile]
print = "yarn"install.linker
依存関係をインストールするためのリンカー戦略を設定します。新しいワークスペースではデフォルトで "isolated"、新しい単一パッケージプロジェクトと既存のプロジェクト(v1.3.2 より前に作成)では "hoisted" になります。
完全なドキュメントについては、パッケージマネージャー > 孤立したインストール を参照してください。
[install]
linker = "hoisted"有効な値は次のとおりです。
| 値 | 説明 |
|---|---|
"hoisted" | 共有 node_modules ディレクトリに依存関係をリンクします。 |
"isolated" | 各パッケージインストール内に依存関係をリンクします。 |
[debug]
# blob: または src: リンクに移動するときに、エディターでファイルを開きます
# そうでない場合、$EDITOR または $VISUAL を試みます
# それでも失敗した場合、Visual Studio Code、次に Sublime Text、次に他のいくつかを試みます
# これは Bun.openInEditor() によって使用されます
editor = "code"
# エディターのリスト:
# - "subl", "sublime"
# - "vscode", "code"
# - "textmate", "mate"
# - "idea"
# - "webstorm"
# - "nvim", "neovim"
# - "vim","vi"
# - "emacs"install.security.scanner
インストール前にパッケージの脆弱性をスキャンするセキュリティスキャナーを設定します。
まず、npm からセキュリティスキャナーをインストールします。
bun add -d @acme/bun-security-scanner次に、bunfig.toml で設定します。
[install.security]
scanner = "@acme/bun-security-scanner"セキュリティスキャナーが構成されている場合:
- セキュリティのために自動インストールが自動的に無効になります
- パッケージはインストール前にスキャンされます
- 致命的な問題が見つかった場合、インストールがキャンセルされます
- インストール中にセキュリティ警告が表示されます
セキュリティスキャナーの使用と作成 について詳しく学ぶことができます。
install.minimumReleaseAge
npm パッケージバージョンの最小年齢(秒単位)を設定します。このしきい値よりも最近公開されたパッケージバージョンは、インストール中にフィルタリングされます。デフォルトは null(無効)です。
[install]
# 少なくとも 3 日前に公開されたパッケージバージョンのみをインストール
minimumReleaseAge = 259200
# これらのパッケージは 3 日の最小年齢要件をバイパスします
minimumReleaseAgeExcludes = ["@types/bun", "typescript"]詳細については、インストールドキュメントの 最小リリース年齢 を参照してください。
bun run
bun run コマンドは [run] セクションで設定できます。これらは bun run コマンドと、ファイルまたは実行可能ファイルまたはスクリプトを実行する際の bun コマンドに適用されます。
現在、bunfig.toml はローカルプロジェクトでの bun run に対してのみ自動的にロードされ(グローバルな .bunfig.toml はチェックされません)。
run.shell - システムシェルまたは Bun のシェルを使用
bun run または bun を介して package.json スクリプトを実行するときに使用するシェル。Windows ではデフォルトで "bun" になり、他のプラットフォームではデフォルトで "system" になります。
(Windows 以外ではデフォルトの動作)常にシステムシェルを使用するには:
[run]
# Windows 以外のデフォルト
shell = "system"常に Bun のシェルを使用するには:
[run]
# Windows のデフォルト
shell = "bun"run.bun - node を bun に自動的にエイリアス
true の場合、bun run または bun によって呼び出されるすべてのスクリプトまたは実行可能ファイルに対して、bun バイナリを指す node シンボリックリンクで $PATH を前置します。
つまり、node を実行するスクリプトがある場合、スクリプトを変更せずに代わりに bun が実行されます。これは再帰的に機能するため、スクリプトが別のスクリプトを実行し、それが node を実行する場合も、代わりに bun が実行されます。これはシェバンにも適用されるため、node を指すシェバンがあるスクリプトがある場合、代わりに bun が実行されます。
デフォルトでは、node がすでに $PATH にない場合、これは有効になります。
[run]
# すべての `bun run` コマンドに対して `bun --bun` と同等
bun = trueこれを確認するには、以下を実行します。
bun --bun which node # /path/to/bun
bun which node # /path/to/nodeこのオプションは、すべての bun run コマンドに --bun を付与するのと同等です。
bun --bun run dev
bun --bun dev
bun run --bun devfalse に設定すると、node シンボリックリンクが無効になります。
run.silent - 実行中のコマンドの報告を抑制
true の場合、bun run または bun によって実行されるコマンドの出力を抑制します。
[run]
silent = trueこのオプションがない場合、実行中のコマンドがコンソールに出力されます。
bun run dev
echo "Running \"dev\"..."Running "dev"...このオプションを使用すると、実行中のコマンドはコンソールに出力されません。
bun run devRunning "dev"...これは、すべての bun run コマンドに --silent を渡すのと同等です。
bun --silent run dev
bun --silent dev
bun run --silent dev