bunfig.toml 进行配置。
一般来说,Bun 依赖于已有的配置文件,如 package.json 和 tsconfig.json 来配置其行为。bunfig.toml 仅在配置 Bun 特定内容时才需要。此文件是可选的,Bun 在没有它的情况下也能开箱即用。
全局 vs. 本地
通常建议在项目根目录下添加一个bunfig.toml 文件,与 package.json 并列。
要进行全局配置,你也可以在以下路径之一创建 .bunfig.toml 文件:
$HOME/.bunfig.toml$XDG_CONFIG_HOME/.bunfig.toml
bunfig 设置。
运行时
Bun 的运行时行为通过bunfig.toml 文件中的顶级字段进行配置。
preload
一个脚本/插件数组,在运行文件或脚本前执行。
bunfig.toml
jsx
配置 Bun 如何处理 JSX。你也可以在 tsconfig.json 的 compilerOptions 中设置这些字段,但这里为了非 TypeScript 项目同样支持这些配置。
bunfig.toml
smol
启用 smol 模式。此模式会降低内存使用,但会牺牲性能。
bunfig.toml
logLevel
设置日志级别。可以是 "debug"、"warn" 或 "error"。
bunfig.toml
define
define 字段允许你用常量表达式替换特定的全局标识符。Bun 会将任何该标识符的使用替换为指定表达式。表达式应是 JSON 字符串。
bunfig.toml
loader
配置 Bun 如何将文件扩展名映射到加载器。适用于加载 Bun 本身不原生支持的文件。
bunfig.toml
jsxjststsxcssfilejsontomlwasmnapibase64dataurltext
telemetry
telemetry 字段用于启用或禁用分析数据收集。默认启用。等同于 DO_NOT_TRACK 环境变量。
目前我们不收集遥测数据,此设置仅用于启/禁匿名崩溃报告,未来计划收集诸如 Bun API 使用频率或 bun build 运行时长等信息。
bunfig.toml
env
配置自动 .env 文件加载。默认情况下,Bun 会自动加载 .env 文件。如需禁用此行为:
bunfig.toml
file 属性:
bunfig.toml
--env-file 明确指定的环境文件仍会被加载。
console
配置控制台输出行为。
console.depth
设置 console.log() 对象检测的默认深度。默认值为 2。
bunfig.toml
--console-depth CLI 标志覆盖。
测试运行器
测试运行器配置于bunfig.toml 的 [test] 部分。
bunfig.toml
test.root
运行测试的根目录。默认 .。
bunfig.toml
test.preload
与顶级 preload 字段相同,但仅应用于 bun test。
bunfig.toml
test.smol
与顶级 smol 字段相同,但仅应用于 bun test。
bunfig.toml
test.coverage
启用覆盖率报告。默认 false。可以使用 --coverage 来覆盖。
bunfig.toml
test.coverageThreshold
指定覆盖率门槛。默认无门槛。如果测试覆盖率未达到此门槛,bun test 会以非零退出码表示失败。
bunfig.toml
bunfig.toml
test.coverageSkipTestFiles
计算覆盖率统计时是否跳过测试文件。默认 false。
bunfig.toml
test.coveragePathIgnorePatterns
使用 glob 模式排除特定文件或模式在覆盖率报告中的统计。可以是单个字符串,也可以是模式数组。
bunfig.toml
test.coverageReporter
默认情况下,覆盖率报告会输出到控制台。为了 CI 环境中持久保存和供其他工具使用,请使用 lcov。
bunfig.toml
test.coverageDir
设置覆盖率报告保存路径。仅对持久化的 coverageReporter(如 lcov)有效。
bunfig.toml
test.randomize
以随机顺序运行测试。默认 false。
bunfig.toml
seed 使用,随机顺序可复现。
当指定 --randomize CLI 标志时,会覆盖此设置。
test.seed
设置测试随机化的随机种子。需要 randomize 为 true。
bunfig.toml
--seed CLI 标志会覆盖此设置。
test.rerunEach
每个测试文件重复运行指定次数。默认 0(运行一次)。
bunfig.toml
--rerun-each CLI 标志会覆盖此设置。
test.concurrentTestGlob
指定一个 glob 模式,使匹配的测试文件自动启用并发执行。这些测试文件行为等同于使用了 --concurrent 标志,文件内所有测试将并发运行。
bunfig.toml
- 逐步迁移测试套件至并发执行
- 并发运行集成测试,同时单线程运行单元测试
- 将快速并发测试与需要依序运行的测试分开
--concurrent CLI 标志时,会覆盖此设置。
test.onlyFailures
启用后,仅显示失败的测试结果,减少大型测试套件的输出噪声。默认 false。
bunfig.toml
bun test 时使用 --only-failures。
test.reporter
配置测试报告器设置。
test.reporter.dots
启用点状报告器,输出紧凑模式,每个测试用点表示。默认 false。
bunfig.toml
test.reporter.junit
启用 JUnit XML 报告,并指定输出文件路径。
bunfig.toml
包管理器
包管理是复杂的问题;为支持多种使用场景,bun install 的行为可在 [install] 部分配置。
bunfig.toml
install.optional
是否安装可选依赖。默认 true。
bunfig.toml
install.dev
是否安装开发依赖。默认 true。
bunfig.toml
install.peer
是否安装 peer 依赖。默认 true。
bunfig.toml
install.production
bun install 是否以“生产模式”运行。默认 false。
生产模式下,不安装 "devDependencies"。CLI 中可使用 --production 覆盖此设置。
bunfig.toml
install.exact
是否在 package.json 中设置精确版本号。默认 false。
默认情况下,Bun 使用插入符号版本范围;例如包的最新版本为 2.4.1,则 package.json 中的版本范围是 ^2.4.1,表示接受 2.4.1 到(不含)3.0.0 之间的任意版本。
bunfig.toml
install.saveTextLockfile
如果为 false,当执行 bun install 并且不存在锁文件时,会生成二进制格式的 bun.lockb,而非文本格式的 bun.lock。
默认自 Bun v1.2 起为 true。
bunfig.toml
install.auto
配置 Bun 的包自动安装行为。默认 "auto" —— 如果未找到 node_modules 文件夹,Bun 会在执行时自动安装依赖。
bunfig.toml
| 值 | 描述 |
|---|---|
"auto" | 如果存在本地 node_modules,则从中解析模块。否则,在执行时自动安装依赖。 |
"force" | 即使存在 node_modules,也总是自动安装依赖。 |
"disable" | 从不自动安装依赖。 |
"fallback" | 先检查本地 node_modules,对未找到的包自动安装。CLI 可用 bun -i 启用。 |
install.frozenLockfile
为 true 时,bun install 不会更新 bun.lock。默认 false。如果 package.json 与现有 bun.lock 不匹配,则会报错。
bunfig.toml
install.dryRun
是否真正安装依赖。默认 false。为 true 则等同于所有 bun install 命令加上 --dry-run。
bunfig.toml
install.globalDir
配置全局安装包的存放目录。
环境变量:BUN_INSTALL_GLOBAL_DIR
bunfig.toml
install.globalBinDir
配置全局安装的二进制文件和 CLI 的存放目录。
环境变量:BUN_INSTALL_BIN
bunfig.toml
install.registry
默认注册表为 https://registry.npmjs.org/。可在全局的 bunfig.toml 中配置:
bunfig.toml
install.linkWorkspacePackages
配置工作区(monorepo)包的链接方式。
是否将工作空间包从 monorepo 根目录链接到各自的 node_modules 目录。默认 true。
bunfig.toml
install.scopes
为特定作用域(如 @myorg/<package>)配置注册表,使用 install.scopes。可通过 $variable 引用环境变量。
bunfig.toml
install.ca 和 install.cafile
配置 CA 证书,使用 install.ca 或 install.cafile 指定证书文件路径。
bunfig.toml
install.cache
配置缓存行为:
bunfig.toml
install.lockfile
配置锁文件行为,使用 install.lockfile 部分。
是否在 bun install 时生成锁文件。默认 true。
bunfig.toml
bun.lock 之外,同时生成非 Bun 格式的锁文件。默认不生成。目前支持的取值只有 "yarn"。
bunfig.toml
install.linker
配置安装依赖的链接策略。新工作区默认 "isolated",新单包项目与现有项目(v1.3.2 以前版本)默认 "hoisted"。
完整文档见 包管理 > 隔离安装。
bunfig.toml
| 值 | 描述 |
|---|---|
"hoisted" | 链接依赖到共享的 node_modules 目录。 |
"isolated" | 每个包安装内部各自链接依赖。 |
bunfig.toml
install.security.scanner
配置安全扫描器,在安装前扫描包中的安全漏洞。
首先,从 npm 安装安全扫描器:
terminal
bunfig.toml 配置:
bunfig.toml
- 自动安装功能自动禁用以保障安全
- 安装前扫描包
- 发现致命问题时取消安装
- 安装过程中显示安全警告
install.minimumReleaseAge
配置 npm 包版本的最小发布日期(秒)。在安装时,会过滤掉比此阈值更新的版本。默认 null(禁用)。
bunfig.toml
bun run
bun run 命令可在 [run] 部分配置。适用于 bun run 命令及 bun 命令运行文件、可执行程序或脚本时。
当前,bunfig.toml 只会自动加载本地项目中的配置(不会检查全局 .bunfig.toml)。
run.shell — 使用系统 shell 还是 Bun 的 shell
通过 bun run 或 bun 运行 package.json 脚本时使用的 shell。Windows 默认 "bun",其他平台默认 "system"。
如需始终使用系统 shell(在非 Windows 上默认行为):
bunfig.toml
bunfig.toml
run.bun — 自动将 node 别名为 bun
为 true 时,会在所有由 bun run 或 bun 调用的脚本或可执行文件的 $PATH 前添加一个指向 bun 二进制的 node 符号链接。
这意味着即使脚本内部调用 node,实际执行的也是 bun,无需更改脚本。此映射支持递归调用,对使用 node 的 shebang 同样生效。
默认情况下,如果 $PATH 中尚无 node,此功能启用。
bunfig.toml
bun run 命令加上 --bun 参数:
false 时禁用该功能。
run.silent — 静默运行不输出命令提示
为 true 时,禁止 bun run 或 bun 输出运行的命令信息。
bunfig.toml
terminal
bun run 命令使用 --silent 参数: