文末福利不能少~今天我们一起来学习toml这种简洁的配置文件格式吧。TOML是在年发布的配置文件格式。距今虽然有8年历史了,但是之前一直没有在大项目中见过的。我是前段时间在看python的pep规范,无意中看到了这种配置文件格式,稍微了解了一下,才发现现在有很多新的明星项目都喜欢用它来做配置文件。
有rust语言的包管理工具cargo;
类似于docker的容器工具containerd;
go语言很多项目都喜欢用。比如静态网站生成工具Hugo、数据库InfluxDB、GitLabCI。
python项目也开始接纳。包管理工具pip、pipenv和Poetry都是用的TOML,1现在连官方的metadata管理也开始支持toml。
1.一个小例子为什么新项目这么喜欢TOML呢?让我们先来看一个TOML的小例子吧,看完了说不定你就知道了。
[project]name="spam"version=".0.0"description="LovelySpam!WonderfulSpam!"readme="README.rst"requires-python="=.8"license={file="LICENSE.txt"}keywords=["egg","bacon","sausage"]有没有感觉很熟悉呢?它和ini格式的配置文件几乎一模一样。要知道互联网发展到今天,大多数有影响力的项目都是采用ini这种配置文件格式,如果你之前有接触过ini,切换到toml几乎是0成本。那为什么不直接用ini呢?因为ini格式支持的数据类型非常少,配置项的值都会被默认当成字符串,如果想表示数字、数组,还需要自己进行额外的解析。但是在TOML中,数据类型非常丰富:
字符串
注释
数字
布尔值
数组
哈希表
甚至连时间格式都支持
2.字符串字符串我们当然不会陌生,但是如果你是从ini格式转过来的,一定要注意字符串值要加引号。键默认会当成字符串处理,可以加也可以不加。加引号的键叫引号键(QuotedKey),不加引号的键叫裸键(BareKey)。TOML格式非常灵活,对于灵活的语言,最好的方式是给自己设置规范和纪律,一直用好一种用法,不然很容易学废。官方推荐我们尽量用裸键,当裸键不能正确表达意思的时候,再用引号键。name="spam"#OKname_1=spam#错误"name_2"="spam"#OK
裸键只能包含ASCII字母,ASCII数字,下划线和短横线(A-Za-z0-9_-),引号键则可以支持特殊字符,甚至是空格。当键中包含特殊字符的时候,使用引号键。
name
!erf:=spam#OKname!erf:=spam#错误当字符串为多行字符串时使用三引号,会自动换行:name="""thisisanewline