Skip to main content
在 Bun 中,YAML 与 JSON 和 TOML 一样是一等公民。您可以:
  • 使用 Bun.YAML.parse 解析 YAML 字符串
  • 在运行时 importrequire YAML 文件作为模块(包括热重载和监视模式支持)
  • 在前端应用中使用 Bun 的打包器 importrequire YAML 文件

一致性

Bun 的 YAML 解析器使用 Rust 编写,通过了超过 90% 的官方 YAML 测试套件,覆盖了绝大多数实际使用场景。我们正在努力实现 100% 的一致性。

运行时 API

Bun.YAML.parse()

将 YAML 字符串解析为 JavaScript 对象。

多文档 YAML

当解析包含多个文档(用 --- 分隔)的 YAML 时,Bun.YAML.parse() 返回一个数组:

支持的 YAML 特性

Bun 的 YAML 解析器支持完整的 YAML 1.2 规范,包括:
  • 标量:字符串、数字、布尔值、null 值
  • 集合:序列(数组)和映射(对象)
  • 锚点和别名:使用 &* 的可复用节点
  • 标签:类型提示,如 !!str!!int!!float!!bool!!null
  • 多行字符串:字面量(|)和折叠(>)标量
  • 注释:使用 #
  • 指令%YAML%TAG

错误处理

Bun.YAML.parse() 在 YAML 无效时抛出 SyntaxError

模块导入

ES 模块

直接作为 ES 模块导入 YAML 文件。Bun 解析内容并将其作为默认导出和命名导出暴露:
config.yaml

默认导入

app.ts

命名导入

顶层的 YAML 属性可作为命名导入使用:
app.ts
或者组合两者:
app.ts

CommonJS

您也可以在 CommonJS 中 require YAML 文件:
app.ts

YAML 热重载

当您使用 bun --hot 运行应用程序时,Bun 会检测 YAML 文件的更改并重新加载它们,无需关闭连接。

配置热重载

config.yaml
server.ts
使用热重载运行:
terminal
现在,当您修改 config.yaml 时,正在运行的应用程序会捕获更改:您可以在开发期间调整设置或切换功能标志,而无需重启。

配置管理

基于环境的配置

一个 YAML 文件可以包含多个环境的配置,使用锚点共享默认值:
config.yaml
app.ts

功能标志配置

features.yaml
feature-flags.ts

数据库配置

database.yaml
db.ts

打包器集成

当您打包导入 YAML 文件的应用程序时,Bun 会在构建时解析 YAML 并将其作为 JavaScript 模块包含:
terminal
在构建时解析意味着:
  • 生产环境中零运行时 YAML 解析开销
  • 更小的打包体积
  • 未使用配置的摇树优化(命名导入)

动态导入

动态导入 YAML 文件以按需加载配置:
根据环境加载配置