简介
dotyaml 是一个 Node.js 中的定位 YAML 配置文件中某个属性值的小工具。它通过提供一个类似于 css 选择器的字符串,来筛选出 YAML 中对应的属性值,能够帮助开发者无需手动解析 YAML,快速定位需要修改或读取的属性。
安装
dotyaml 可以使用 npm 安装:
npm install dotyaml --save
使用
-- -------------------- ---- ------- ----- -- - -------------- ----- ------- - ------------------- ----- ---------- - ----------------------------- -------- ----- ---------- - --------------------------- -- -- ---------- - ------- -- ----- ------ - ----------------------- ----------- --------------------------------
上面的代码便是一个基本的使用示例。首先读取了一个 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>
自定义标记。标记格式如下:
{ tag: '!foobar', test: /^foobar$/, resolve: (_, __) => 'Successfully resolved!' }
options.implicitTypes
类型:Array<object>
隐式类型。类型格式如下:
{ regexp: /^null$/, replace: () => null }
解析文件
上面的示例中,我们已经使用 dotyaml.object
将 YAML 文件解析成 JS 对象了。但如果你只是想单纯的解析一份 YAML 文件,你也可以使用 dotyaml.parse
方法。用法如下:
const fs = require('fs'); const dotyaml = require('dotyaml'); const yamlString = fs.readFileSync('config.yml', 'utf8'); const yamlObject = dotyaml.parse(yamlString); console.log(yamlObject);
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