主题
第 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: 那一行。)