- 使用
Bun.YAML.parse解析 YAML 字符串 - 在运行时以模块形式
import和requireYAML 文件(包括热重载和监听模式支持) - 通过 Bun 的打包器在前端应用中
import和requireYAML 文件
兼容性
Bun 的 YAML 解析器目前通过了官方 YAML 测试套件超过 90% 的测试。我们正积极努力达到 100% 兼容,但现有实现已覆盖绝大多数实际使用场景。解析器使用 Zig 编写以获得最佳性能,并持续改进中。运行时 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
错误处理
如果 YAML 无效,Bun.YAML.parse() 会抛出 SyntaxError:
模块导入
ES 模块
你可以直接将 YAML 文件导入为 ES 模块。YAML 内容会被解析,既作为默认导出,也提供命名导出:config.yaml
默认导入
命名导入
你可以将顶层 YAML 属性解构为命名导入:CommonJS
YAML 文件也可以在 CommonJS 环境中通过 require 加载:YAML 热重载
Bun 支持的 YAML 最强大特性之一是热重载。当你使用bun --hot 运行应用时,对 YAML 文件的修改会被自动检测并进行热刷新,无需关闭连接。
配置热重载示例
config.yaml
terminal
config.yaml 会立即在运行的应用中生效。非常适合:
- 开发过程中的配置调整
- 不重启测试不同设置
- 配置变更时实时调试
- 启用或关闭功能开关
配置管理
基于环境的配置
YAML 非常适合管理多环境配置:config.yaml
功能标志配置
features.yaml
数据库配置
database.yaml
打包器集成
当你导入 YAML 文件并用 Bun 打包时,YAML 会在构建时被解析并作为 JavaScript 模块包含:terminal
- 生产环境零运行时 YAML 解析开销
- 更小的包体积
- 支持未用配置的摇树优化(命名导入)