npm 包 dotyaml 使用教程

阅读时长 5 分钟读完

简介

dotyaml 是一个 Node.js 中的定位 YAML 配置文件中某个属性值的小工具。它通过提供一个类似于 css 选择器的字符串,来筛选出 YAML 中对应的属性值,能够帮助开发者无需手动解析 YAML,快速定位需要修改或读取的属性。

安装

dotyaml 可以使用 npm 安装:

使用

-- -------------------- ---- -------
----- -- - --------------
----- ------- - -------------------

----- ---------- - ----------------------------- --------
----- ---------- - ---------------------------

-- -- ---------- - ------- --
----- ------ - ----------------------- -----------

--------------------------------

上面的代码便是一个基本的使用示例。首先读取了一个 YAML 格式的配置文件,然后通过 dotyaml.object 方法将其转换为一个 JavaScript 对象,再通过 dotyaml.get 方法获取对象中 db.host 的值。

在这里,使用 dotyaml.object 方法将 YAML 解析成 JavaScript 对象的使用方法十分类似 JSON.parse,可以配置第二个参数的传入,用以配置文件解析时的选项。使用 dotyaml.get 获取值的方法则是通过传入一个类 Css 选择器的字符串,快速获取 YAML 中的值。

高级使用

dotyaml 还提供了一些高级使用的方法,可以帮助我们更好地处理 YAML 文件,快速定位到想要查找的值。

配置解析选项

在上面的使用示例中,我们提到了 dotyaml.object 方法可以配置解析选项,这里我们介绍一下常用的参数。

options.prettyErrors

类型:Boolean
默认:false

是否将 YAML 文件解析的详细错误信息返回。如果开启此选项,当解析 YAML 文件发生错误时,将会抛出一个包含错误信息的 Error 对象。

options.filename

类型:String

要解析的文件名或路径。

options.schema

类型:Object | Array<Object>
默认:yaml.DEFAULT_SCHEMA

指定要使用的 JSONSchema。

options.customTags

类型:Array<string | object>

自定义标记。标记格式如下:

options.implicitTypes

类型:Array<object>

隐式类型。类型格式如下:

解析文件

上面的示例中,我们已经使用 dotyaml.object 将 YAML 文件解析成 JS 对象了。但如果你只是想单纯的解析一份 YAML 文件,你也可以使用 dotyaml.parse 方法。用法如下:

dotyaml.parse 方法接收任何一个 YAML 字符串,返回 JavaScript 对象。

获取合并的结果

我们可以使用 dotyaml.merge 方法来将多份 YAML 文本的解析结果合并成一个结果。

-- -------------------- ---- -------
----- ------- - -------------------

----- ---- - ---------------
---
  ----- ---------
  ----- ----
  --------- ---------
---
----- ---- - ---------------
---
  --------- ----
  --------- ---------
---

----- ------ - -------------------- -------

--------------------

dotyaml.merge 方法接收一个包含多个 JavaScript 对象的数组,返回合并后的 JavaScript 对象。在上面的例子中,我们合并了两份 YAML 文本中的 db 属性,由于 obj2 中的 password 属性被 obj1 中的同名属性覆盖了,所以结果中只有一个 password 属性。

总结

在开发中,处理一些配置文件是非常常见的事情,dotyaml 可以帮助我们在 Node.js 环境中更加优雅地操作 YAML 配置文件,大大减少了我们手动解析 YAML 的时间。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056cf681e8991b448e6bad

纠错
反馈