js-yaml中文文档|js-yaml js中文教程|解析

npm npmdoc 2年前 (2021-10-18) 4070次浏览

js-yaml中文文档|js-yaml js中文教程|解析

安装命令:npm i js-yaml

JS-YAML – 用于 JavaScript 的 YAML 1.2 解析器/编写器

CI
NPM 版本

在线演示

这是YAML 的一种实现,一种人性化的数据序列化语言。PyYAML端口开始,它从头开始完全重写。现在它非常快,并且支持 1.2 规范。

安装

node.js 的 YAML 模块

npm install js-yaml

CLI 可执行文件

如果要从 CLI 检查 YAML 文件,请全局安装 js-yaml:

npm install -g js-yaml

用法

usage: js-yaml [-h] [-v] [-c] [-t] file

Positional arguments:
  file           File with YAML document(s)

Optional arguments:
  -h, --help     Show this help message and exit.
  -v, --version  Show program's version number and exit.
  -c, --compact  Display errors in compact mode
  -t, --trace    Show stack trace on error

应用程序接口

在这里,我们介绍了最“有用”的方法。如果您需要高级详细信息(创建您自己的标签),请参阅示例
以获取更多信息。

const yaml = require('js-yaml');
const fs   = require('fs');

// Get document, or throw exception on error
try {
  const doc = yaml.load(fs.readFileSync('/home/ixti/example.yml', 'utf8'));
  console.log(doc);
} catch (e) {
  console.log(e);
}

负载(字符串 [ ,选项 ])

解析string为单个 YAML 文档。返回一个普通对象、一个字符串、一个数字nullundefined,或抛出YAMLException错误。默认情况下,不支持正则表达式、函数和未定义。

选项:

  • filename (默认值:null) – 在错误/警告消息中用作文件路径的字符串。
  • onWarning (默认值:null) – 调用警告消息的函数。Loader 将使用YAMLException每个警告的实例调用此函数
  • schema (默认DEFAULT_SCHEMA -指定使用的模式。

  • json (默认值:false) – 与 JSON.parse 行为兼容。如果为 true,则映射中的重复键将覆盖值而不是抛出错误。

注:此功能并不了解多文档的来源,它会抛出异常的那些。

注意:JS-YAML支持特定于架构的标签解析限制。因此,JSON 模式在 YAML 规范中没有严格定义。它允许任何符号中的数字,useNullNULLasnull等。核心模式也没有这样的限制。它允许整数的二进制表示法。

loadAll (string [, iterator] [, options ])

与 相同load(),但了解多文档来源。iterator如果指定,则应用于
每个文档,或返回文档数组。

const yaml = require('js-yaml');

yaml.loadAll(data, function (doc) {
  console.log(doc);
});

转储(对象 [,选项])

序列object化为 YAML 文档。使用DEFAULT_SCHEMA,因此如果您尝试转储正则表达式或函数,它将引发异常。但是,您可以通过将该skipInvalid选项设置为 来禁用异常true

选项:

  • indent (默认值:2) – 要使用的缩进宽度(以空格为单位)。
  • noArrayIndent (默认值:false) – 当为 true 时,不会向数组元素添加缩进级别
  • skipInvalid (默认值:false) – 不要抛出无效类型(如安全模式中的函数)并跳过具有此类类型的对和单个值。
  • flowLevel (默认值:-1) – 指定嵌套级别,何时从集合切换到流样式。-1 意味着块样式无处不在
  • styles-“标签”=>“风格”地图。每个标签可能有自己的一组样式。
  • schema (默认值:DEFAULT_SCHEMA指定使用的模式。
  • sortKeys (默认: false) – if true,在转储 YAML 时对键进行排序。如果是函数,请使用该函数对键进行排序。
  • lineWidth (默认: 80) – 设置最大线宽。设置-1为无限宽度。
  • noRefs (默认: false) – 如果true, 不将重复的对象转换为引用
  • noCompatMode (默认:false -如果true不尝试与旧YAML版本兼容。当前:不要按照 YAML 1.1 的要求引用“是”、“否”等
  • condenseFlow (默认: false) – 如果true流序列将被压缩,省略a, b. 例如。'[a,b]', 并省略key: value和引用键之间的空格例如。'{"a":b}'使用 yaml 进行漂亮的 URL 查询参数时可能很有用,因为空格是 % 编码的。
  • quotingType ('", 默认值: ') – 字符串将使用此引用样式引用。如果您指定单引号,双引号仍将用于不可打印的字符。
  • forceQuotes (默认值:false – 如果true,即使它们通常不需要,也会引用所有非键字符串。
  • replacerfunction (key, value)在源对象中的每个键/值上递归调用回调(请参阅replacer文档JSON.stringify)。

下表显示了每个标签可用的可用样式(例如“规范”、“二进制”…)(例如 !!null、!!int …)。Yaml 输出显示在右侧之后=>(默认设置)或->

!!null
  "canonical"   -> "~"
  "lowercase"   => "null"
  "uppercase"   -> "NULL"
  "camelcase"   -> "Null"

!!int
  "binary"      -> "0b1", "0b101010", "0b1110001111010"
  "octal"       -> "0o1", "0o52", "0o16172"
  "decimal"     => "1", "42", "7290"
  "hexadecimal" -> "0x1", "0x2A", "0x1C7A"

!!bool
  "lowercase"   => "true", "false"
  "uppercase"   -> "TRUE", "FALSE"
  "camelcase"   -> "True", "False"

!!float
  "lowercase"   => ".nan", '.inf'
  "uppercase"   -> ".NAN", '.INF'
  "camelcase"   -> ".NaN", '.Inf'

例子:

dump(object, {
  'styles': {
    '!!null': 'canonical' // dump null as ~
  },
  'sortKeys': true        // sort object keys
});

支持的 YAML 类型

标准 YAML 标签和相应 JavaScript 类型的列表。另请参阅
YAML 标记讨论
YAML 类型存储库

!!null ''                   # null
!!bool 'yes'                # bool
!!int '3...'                # number
!!float '3.14...'           # number
!!binary '...base64...'     # buffer
!!timestamp 'YYYY-...'      # date
!!omap [ ... ]              # array of key-value pairs
!!pairs [ ... ]             # array or array pairs
!!set { ... }               # array of objects with given keys and null values
!!str '...'                 # string
!!seq [ ... ]               # array
!!map { ... }               # object

特定于 JavaScript 的标签

有关额外类型,请参阅js-yaml-js- types。

注意事项

请注意,您在 JS-YAML 中使用数组或对象作为键。JS 不允许对象或数组作为键,并toString()在添加它们时将它们字符串化(通过调用方法)。

---
? [ foo, bar ]
: - baz
? { foo: bar }
: - baz
  - baz
{ "foo,bar": ["baz"], "[object Object]": ["baz", "baz"] }

此外,尚不支持读取隐式块映射键的属性。因此,无法加载以下 YAML 文档。

&anchor foo:
  foo: bar
  *anchor: duplicate key
  baz: bat
  *anchor: duplicate key

用于企业的 js-yaml

作为 Tidelift 订阅的一部分提供

js-yaml 和数千个其他软件包的维护者正在与 Tidelift 合作,为您用于构建应用程序的开源依赖项提供商业支持和维护。节省时间、降低风险并改善代码健康状况,同时为您使用的确切依赖项的维护人员付费。了解更多。

项目贡献人员列表:


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:js-yaml中文文档|js-yaml js中文教程|解析
喜欢 (0)
.excerpt .focus {display:none}