- 使用
Bun.TOML.parse解析 TOML 字符串 - 在运行时
import和requireTOML 文件作为模块(包括热重载和监视模式支持) - 在前端应用中使用 Bun 的打包器
import和requireTOML 文件
运行时 API
Bun.TOML.parse()
将 TOML 字符串解析为 JavaScript 对象。
支持的 TOML 特性
Bun 的 TOML 解析器实现了完整的 TOML v1.1.0 规范,并通过了完整的官方 toml-test 一致性测试套件。- 字符串:基本(
"...")和字面量('...'),包括多行,所有转义符(\uHHHH、\UHHHHHHHH以及 TOML 1.1 的\xHH和\e) - 整数:十进制、十六进制(
0x)、八进制(0o)和二进制(0b)。无法无损表示为 JavaScript 数值的整数——超出 ±(2^53 - 1)——会抛出异常 - 浮点数:包括
inf和nan - 布尔值:
true和false - 日期/时间:偏移日期时间、本地日期时间、本地日期和本地时间,以其源文本字符串形式返回
- 数组:包括混合类型和嵌套数组
- 表:标准(
[table])和内联({ key = "value" }),包括 TOML 1.1 多行内联表 - 表数组:
[[array]] - 点键:
a.b.c = "value" - 注释:使用
#
错误处理
Bun.TOML.parse() 在 TOML 无效时抛出 SyntaxError:
Bun.TOML.stringify()
将 JavaScript 对象序列化为 TOML 文档。标量键在前,然后是 [table] 和 [[array-of-tables]] 部分:
Date 值变成 TOML 偏移日期时间。由于 TOML 无法表示它们,null 值、BigInt 和循环结构会抛出异常;undefined、函数和符号属性会被跳过(在数组内部会抛出异常,因为 TOML 数组不能有空位)。
模块导入
ES 模块
直接作为 ES 模块导入 TOML 文件。Bun 解析 TOML 并将其作为默认导出和命名导出暴露:config.toml
默认导入
app.ts
命名导入
您可以将顶层的 TOML 表解构为命名导入:app.ts
app.ts
导入属性
使用导入属性将任何文件作为 TOML 加载:app.ts
CommonJS
您也可以在 CommonJS 中require TOML 文件:
app.ts
TOML 热重载
当您使用bun --hot 运行应用程序时,Bun 会检测 TOML 文件的更改并重新加载它们,无需重启:
config.toml
server.ts
terminal
打包器集成
当您使用 Bun 打包时,打包器会在构建时解析导入的 TOML 并将其作为 JavaScript 模块包含:terminal
- 生产环境中零运行时 TOML 解析开销
- 更小的打包体积
- 未使用属性的摇树优化(命名导入)