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

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

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

YAML是“YAML Ain't Markup Language”的递归首字母缩写。在YAML开发的早期,它的意思是“另一种标记语言”,[3],但后来它被重新解释(反向命名最初的缩写词),以区分其面向数据的目的,而不是文档标记。

那么,.yaml.yml到底有什么不同呢?什么时候我们应该选择其中一种?

185663 次浏览

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

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

因此,真正重要的是文件内部是什么,而不是它的扩展名是什么。

正如@David Heffeman指出的那样,建议在可能的情况下使用.yaml,并且自2006年9月以来一直是这样的建议。

一些项目使用.yml主要是因为实现者/文档者的无知:他们想要使用YAML是因为可读性,或者其他格式中没有的其他特性,他们不熟悉推荐,并且只是实现了工作,可能是在查看其他项目/库之后(没有质疑所做的是否正确)。

最好的方法是在创建新文件时严格(即使用.yaml),在接受输入时宽容(即当遇到.yml时允许它),尽可能自动升级/纠正这些错误。

我的另一个建议是记录参数为什么,你必须使用.yml,当你认为你必须这样做的时候。这样你就不会看起来像个无知的人,也会给别人机会理解你的推理。当然,“每个人都在这么做”和“在谷歌上.yml的页面比.yaml多”不是参数,它们只是关于错误或正确(关于YAML文件扩展)的项目受欢迎程度的统计数据。你可以试着证明一些项目是受欢迎的,只是因为他们使用了一个.yml扩展,而不是正确的.yaml,但我认为你会很难这样做。

一些项目意识到(太晚了)他们使用了不正确的扩展名(例如,最初docker-compose使用.yml,但在后来的版本中开始使用.yaml,尽管他们仍然支持.yml)。其他人似乎仍然不知道正确的扩展名,如AppVeyor 2019年初,但允许您为项目指定配置文件,包括扩展名。这允许你从你的脸中得到配置文件,并给它适当的扩展名:我使用.appveyor.yaml而不是appveyor.yml来构建我的YAML Python解析器的窗口轮)。


另一方面:

Symfony2的Yaml (sic!)组件实现了Yaml 1.2版本规范中定义的选定特征子集

因此,他们也使用推荐扩展的子集似乎是合适的。