YAML文件中的内联注释
我正在使用以下过梁检查我的yml是否有效: 我尝试放置内联注释,但它们已被删除。我在这里读过说明书 我是否正确地认为以下内容实际上是有效的,而linting网站通过删除评论是错误的YAML文件中的内联注释,yaml,Yaml,我正在使用以下过梁检查我的yml是否有效: 我尝试放置内联注释,但它们已被删除。我在这里读过说明书 我是否正确地认为以下内容实际上是有效的,而linting网站通过删除评论是错误的 cache: paths: - node_modules/ # some comment here 你的消息来源是正确的。如果您希望在保留注释的情况下运行这样的检查,或者重新格式化保留注释的格式,那么请使用基于的小型Python程序,该程序可以在往返过程中保留注释并规范缩进(免责声明:我是ruame
cache:
paths:
- node_modules/ # some comment here
你的消息来源是正确的。如果您希望在保留注释的情况下运行这样的检查,或者重新格式化保留注释的格式,那么请使用基于的小型Python程序,该程序可以在往返过程中保留注释并规范缩进(免责声明:我是
ruamel.yaml
的作者):
导入系统
从ruamel.yaml导入yaml
从ruamel.yaml.util导入加载\u yaml\u猜测\u缩进
打开(sys.argv[1])作为fp:
数据,ind,偏移量=加载\ yaml \猜测\缩进(fp)
yaml=yaml()
yaml.indent(映射=ind,序列=ind,偏移=offset)
yaml.dump(数据,系统标准输出)
只需在命令行上提供输入文件作为参数
与所有基于web的检查器相比,这有一个优势,即您可能的敏感数据不会“发布”。
与Yamlint.com和其他一些网站相比,它还具有支持Yaml1.2的优势yamlint.com
仅支持YAML 1.1,如果您使用显式YAML文档指令进行尝试,您会看到:
%YAML 1.2
---
a: 0o7
...
该站点抛出一个错误,该版本不受支持。这比例如所做的(忽略指令,将其解析为YAML 1.1,将八进制整数标量解析为字符串标量)或半成熟的YAML at实现(错误:无法解析))更好。linter说yml是有效的。默认情况下,linter可能只是删除注释。它并没有说它是无效的。@KodosJohnson你确实是对的,我重新措辞了这个句子。然而,linter不应该删除注释,你不这样认为吗?我的理论是解析器读取yml以确定其有效性,然后重建yml以显示给你。作为该过程的一部分,解析器将丢弃任何注释,因为它们没有任何效果(它们只是注释,并不打算由解析器使用)。所以我认为这只是一个副作用。