我在YAML-wikipedia上阅读了它们,但并没有真正理解它们之间的主要区别。我看到有人使用.yaml
扩展程序,但 Symfony2 使用.yml
扩展程序。
YAML 是一种人类可读的数据序列化格式,它采用来自C,Perl和Python等编程语言的概念,以及来自XML的思想和电子邮件的数据格式。
YAML 是" YAML Ain&n;标记语言"的递归缩写。在其发展的早期,据说YAML意味着"又一种标记语言",[3]但它被重新解释(backronyming the original acronym)以区分其作为面向数据的目的,而不是文档标记。
那么,.yaml
和.yml
之间的差异究竟如何呢?什么时候我们应该优先选择另一个呢?
答案 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。
因此,他们还使用建议的扩展名的子集似乎很合适。