.yaml和.yml扩展名有什么区别?

时间:2014-03-08 11:51:17

标签: symfony yaml naming-conventions

我在YAML-wikipedia上阅读了它们,但并没有真正理解它们之间的主要区别。我看到有人使用.yaml扩展程序,但 Symfony2 使用.yml扩展程序。

YAML 是一种人类可读的数据序列化格式,它采用来自C,Perl和Python等编程语言的概念,以及来自XML的思想和电子邮件的数据格式。

YAML 是" YAML Ain&n;标记语言"的递归缩写。在其发展的早期,据说YAML意味着"又一种标记语言",[3]但它被重新解释(backronyming the original acronym)以区分其作为面向数据的目的,而不是文档标记。

那么,.yaml.yml之间的差异究竟如何呢?什么时候我们应该优先选择另一个呢?

2 个答案:

答案 0 :(得分:112)

文件扩展名对文件内容没有任何影响或影响。您可以将YAML内容保存在任何扩展名的文件中:.yml,.yaml或其他任何内容。

你使用.yaml优先于.yml的(相当稀疏的)YAML FAQ recommends,但由于历史原因,许多Windows程序员仍然害怕使用超过三个字符的扩展,因此选择使用。 yml而不是。

所以,真正重要的是文件内部的内容,而不是它的扩展名。

答案 1 :(得分:0)

正如@David Heffeman指出的那样,建议是在可能的情况下使用.yaml,并且从2006年9月开始就是这样。

某些项目使用.yml的原因主要是由于实施者/文档编写者的无知:他们由于易读性或其他格式无法提供的某些其他功能而希望使用YAML,因此不熟悉建议,并且只是实施了可行的方法,也许是在查看了其他项目/库之后(无需怀疑所做的操作是否正确)。

解决此问题的最佳方法是在创建新文件时严格(即使用.yaml),在接受输入时允许(即遇到.yml时允许)尽可能自动升级/更正这些错误。

我要提出的另一项建议是,在您认为有必要的情况下,记录为什么必须使用.yml的论点为什么。这样,您就不会喜欢无知,而是会给其他人机会来理解您的推理。当然,“其他人都在做”和“在Google .yml上的页面多于.yaml”不是自变量,它们只是有关项目错误或正确的项目受欢迎程度的统计信息(关于YAML文件的扩展名)。您可以尝试证明某些项目很受欢迎,只是因为它们使用了.yml扩展名而不是正确的.yaml,但是我认为这样做很难。

一些项目意识到(为时已晚)他们使用了错误的扩展名(例如,最初docker-compose使用的是.yml,但在更高版本中开始使用.yaml,尽管它们仍支持{{ 1}})。其他人仍然对正确的扩展名一无所知,例如AppVeyor 2019年初,但允许您指定项目的配置文件,包括扩展名。这样一来,您就可以摆脱配置文件的困扰,并为其提供适当的扩展名:我使用.yml而非.appveyor.yaml来构建用于Python的YAML解析器的Windows轮子。


另一方面:

  

Symfony2的Yaml(sic!)组件实现了YAML 1.2版本规范中定义的选定subset of features

因此,他们还使用建议的扩展名的子集似乎很合适。