- 使用
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 规范,包括:- 标量: 字符串、数字、布尔值、空值
- 集合: 序列(数组)和映射(对象)
- 锚点和别名: 使用
&和*的可重用节点 - 标签: 类型提示,如
!!str、!!int、!!float、!!bool、!!null - 多行字符串: 字面量(
|)和折叠(>)标量 - 注释: 使用
# - 指令:
%YAML和%TAG
错误处理
如果 YAML 无效,Bun.YAML.parse() 会抛出一个 SyntaxError:
模块导入
ES 模块
你可以直接将 YAML 文件作为 ES 模块导入。YAML 内容会被解析并作为默认和命名导出提供:config.yaml
默认导入
命名导入
你可以将顶级 YAML 属性解构为命名导入:CommonJS
YAML 文件也可以在 CommonJS 中引入:YAML 热重载
Bun 的 YAML 支持最强大的特性之一是热重载。当您使用bun --hot 运行应用程序时,YAML 文件的更改会自动检测并重载,而无需关闭连接
配置热重载
config.yaml
terminal
config.yaml 时,更改会立即反映在您的运行应用程序中。这对于:
- 在开发过程中调整配置
- 无需重启即可测试不同设置
- 使用配置更改进行实时调试
- 功能标志切换
配置管理
基于环境的配置
YAML 在管理不同环境的配置方面表现出色:config.yaml
功能标志配置
features.yaml
数据库配置
database.yaml
打包器集成
当您在应用程序中导入 YAML 文件并通过 Bun 打包时,YAML 会在构建时被解析并作为 JavaScript 模块包含:terminal
- 生产环境中零运行时 YAML 解析开销
- 更小的包大小
- 对未使用的配置(命名导入)的摇树支持
动态导入
YAML 文件可以动态导入,对于按需加载配置很有用:基于环境加载配置