主题
第 6 章 JSON 与配置文件家族
JSON 在第一册第 4 章露过面(软件之间传的单子),这一章把它升级成"读写自如"。全部规则只有四条。{} 包一组名字: 值,这是对象。[] 包一列东西,这是数组。名字必须带双引号。条目之间用逗号,且最后一项后面不许留逗号,这是手改 JSON 时最经典的翻车点。值只有六种可能,文本,数字,true/false,null,另一个对象,另一个数组。就这些,没了。
拿真实标本练手,package.json,第二册第 10 章的"购物清单加快捷按钮",现在你能逐行读了。
json
{
"name": "hello-web",
"scripts": {
"dev": "vite dev",
"build": "vite build"
},
"dependencies": {
"react": "^18.3.1"
}
}连 ^18.3.1 头上那顶小帽子都有意思,读作"18 这个大版本内,允许自动更新"。第一册第 10 章讲的 semver,在这里现形。
家族里还有两位常客要认脸。YAML(.yml / .yaml),用缩进代替花括号的"晚礼服 JSON",.github/workflows/ 里的自动流水线穿的就是它。缩进即层级,冒号后面是值,- 开头是列表项。它优雅,但有洁癖,缩进错一格,整个文件瘫痪,改它时对齐就是命。.env,最朴素的一族,名字=值,一行一条,没有引号没有括号,但纪律最重,第一册第 9 章说过,永不进 Git。
这一家子有条共同的天性,值得单独说破。配置文件没有逻辑,只有事实。它们自己不"做"任何事,只是被程序读取的设置表。所以它们是全项目里最适合你亲手改的文件,改错了程序会明确抱怨,不会静悄悄坏掉。当然,改之前依然先 commit,第二册的存档习惯,任何时候都成立。
认脸卡
花括号加双引号 = JSON;缩进加冒号、没有括号 = YAML;等号一行一条 = env。
关键领悟
从配置文件开始建立"我敢改文件"的手感。没有逻辑,改动可见,错了就报,是最安全的第一块陆地。
试一试
打开我们项目的 package.json,把 scripts 里每一条翻译成人话。再打开 .github/workflows/ 里任意一个 yml,只回答一个问题,这条流水线在什么时候被触发?提示,找 on: 那一行。