- 使用
Bun.YAML.parse解析 YAML 字符串 - 在运行时
import和requireYAML 文件作为模块(包括热重载和监视模式支持) - 在前端应用中使用 Bun 的打包器
import和requireYAML 文件
一致性
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 文件以按需加载配置:根据环境加载配置