YAML文件中的内联注释

YAML文件中的内联注释,yaml,Yaml,我正在使用以下过梁检查我的yml是否有效: 我尝试放置内联注释,但它们已被删除。我在这里读过说明书 我是否正确地认为以下内容实际上是有效的,而linting网站通过删除评论是错误的 cache: paths: - node_modules/ # some comment here 你的消息来源是正确的。如果您希望在保留注释的情况下运行这样的检查,或者重新格式化保留注释的格式,那么请使用基于的小型Python程序,该程序可以在往返过程中保留注释并规范缩进(免责声明:我是ruame

我正在使用以下过梁检查我的yml是否有效:

我尝试放置内联注释,但它们已被删除。我在这里读过说明书

我是否正确地认为以下内容实际上是有效的,而linting网站通过删除评论是错误的

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以显示给你。作为该过程的一部分,解析器将丢弃任何注释,因为它们没有任何效果(它们只是注释,并不打算由解析器使用)。所以我认为这只是一个副作用。