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
运行文件或脚本之前要执行的脚本/插件数组。
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
是否安装对等依赖。默认值 true。
bunfig.toml
install.production
bun install 是否将在”生产模式”下运行。默认值 false。
在生产模式下,不安装 "devDependencies"。您可以在 CLI 中使用 --production 覆盖此设置。
bunfig.toml
install.exact
是否在 package.json 中设置精确版本。默认值 false。
默认情况下,Bun 使用插入符号范围;如果包的 latest 版本是 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 文件。
默认值 true(自 Bun v1.2 起)。
bunfig.toml
install.auto
配置 Bun 的包自动安装行为。默认值 "auto" — 当未找到 node_modules 文件夹时,Bun 将在执行期间自动安装依赖。
bunfig.toml
| 值 | 描述 |
|---|---|
"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 不一致,这将报错。
bunfig.toml
install.dryRun
bun install 是否实际安装依赖。默认值 false。当为 true 时,等同于在所有 bun install 命令上设置 --dry-run。
bunfig.toml
install.globalDir
配置 Bun 放置全局安装包的目录。
环境变量:BUN_INSTALL_GLOBAL_DIR
bunfig.toml
install.globalBinDir
配置 Bun 安装全局安装的二进制文件和 CLI 的目录。
环境变量:BUN_INSTALL_BIN
bunfig.toml
install.registry
默认注册表是 https://registry.npmjs.org/。这可以在 bunfig.toml 中全局配置:
bunfig.toml
install.linkWorkspacePackages
要配置工作区包的链接方式,请使用 install.linkWorkspacePackages 选项。
是否将单体仓库根目录的工作区包链接到各自 node_modules 目录。默认值 true。
bunfig.toml
install.scopes
要配置特定范围的注册表(例如 @myorg/<package>),请使用 install.scopes。您可以使用 $variable 符号引用环境变量。
bunfig.toml
install.ca 和 install.cafile
要配置 CA 证书,请使用 install.ca 或 install.cafile 指定 CA 证书文件的路径。
bunfig.toml
install.cache
配置缓存行为:
bunfig.toml
install.lockfile
要配置锁文件行为,请使用 install.lockfile 部分。
是否在 bun install 时生成锁文件。默认值 true。
bunfig.toml
bun.lock 旁边生成非 Bun 锁文件。(始终会创建 bun.lock。)当前唯一支持的值是 "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 仅在本地项目中为 bun run 自动加载(它不会检查全局 .bunfig.toml)。
run.shell - 使用系统 shell 或 Bun 的 shell
通过 bun run 或 bun 运行 package.json 脚本时要使用的 shell。在 Windows 上,默认为 "bun",在其他平台上默认为 "system"。
要始终使用系统 shell 而不是 Bun 的 shell(Windows 以外的默认行为):
bunfig.toml
bunfig.toml
run.bun - 自动将 node 别名为 bun
当为 true 时,这会在 $PATH 前面添加一个指向 bun 二进制文件的 node 符号链接,用于所有由 bun run 或 bun 调用的脚本或可执行文件。
这意味着如果您的脚本运行 node,它实际上会运行 bun,而无需更改脚本。这可以递归工作,因此如果您的脚本运行另一个运行 node 的脚本,它也会运行 bun。这也适用于 shebang,因此如果您有指向 node 的 shebang 的脚本,它实际上会运行 bun。
默认情况下,如果您的 $PATH 中还没有 node,则启用此功能。
bunfig.toml
bun run 命令添加 --bun 前缀:
false,这将禁用 node 符号链接。
run.silent - 抑制报告正在运行的命令
当为 true 时,抑制 bun run 或 bun 运行的命令的输出。
bunfig.toml
terminal
--silent 传递给所有 bun run 命令: