入门

第 4

结构化配置:改值,而不是改标点

文本编辑器展示源码;格式命令展示数据模型。真正实用的是知道什么时候切换视角。

为什么专用工具有时更简单

如果一个很大的配置文件里只需要修改 application.debug,直接指出逻辑路径,通常比搜索正确位置并小心维护逗号、括号或分隔符更明确。

多个格式,共用一种节奏

这些模块刻意保持相似语法:打开、读取键、搜索、用 : 写入、删除、用 -c 验证,或用 dump 输出序列化文本。打开后,$ 还可以代表活动文件。

install md mf code ini json xml yml toml conf properties
md lil-playground/project/config
mf lil-playground/project/config/app.ini
cd lil-playground
ini project/config/app.ini
ini $ -w application.name : "lil playground"
ini $ application.name
ini $ -c

INI:分区和简单值

INI 用分区组织键值对。点路径可以直接访问逻辑值,不必在整个文件里滚动寻找。

ini project/config/app.ini
ini $ -w application.debug : true
ini $ application.debug
ini $ -f "application*" -k

JSON:对象、数组和类型

在这个练习里,先用 code -n 打开 project/config/app.json,粘贴下面的 {} 初始内容并保存,然后再运行 json 命令。结构化编辑器需要先拿到有效的 JSON。

JSON 广泛用于 API、元数据和应用配置。按路径修改可以减少逗号或括号错误,-c 则提供显式验证。

先用这个内容创建文件
{}
code project/config/app.json -n
json project/config/app.json
json $ -w limits.history : 100
json $ limits.history
json $ -c

YAML、TOML、XML、conf 和 properties

YAML 依赖缩进,TOML 强调表与类型,XML 使用元素和属性,conf/properties 常见于键值配置。lil 让常用操作保持相似,但不会假装这些格式完全相同。

INI分区 + 键值紧凑配置
JSON对象 + 数组API 与元数据
YAML缩进 + 映射部署配置
TOML表 + 类型工具和应用设置
XML元素 + 属性结构化文档
conf / properties键值系列服务器和应用设置

先验证;需要源码时再 `dump`

-c 验证文档,dump 返回序列化的源码表示。结构化写入可能规范化空白、顺序或注释;如果精确文本布局本身很重要,请用 editcode

json $ -c
json dump $
ini dump project/config/app.ini

什么时候回到 `code`

格式模块适合定点值、搜索和验证;注释、精确排版或高级格式特性很重要时,code 更合适。两者没有高低之分,只是在回答不同问题。

code project/config/app.ini -ini
code project/config/app.json -json

配置修改非常适合保存成脚本

一组已经验证过的配置动作,可以成为“能执行的文档”。到另一个项目时先读一遍,调整必要的值,再复现同样的环境。

把它保存成脚本

保存为 configure-app.lil。它完成两项定点 INI 修改并验证文档;除非已经设计好受保护的秘密信息流程,否则不要把秘密直接写进可移植脚本。

#lil
@install md mf ini json
md lil-playground/project/config
mf lil-playground/project/config/app.ini
cd lil-playground
ini project/config/app.ini
ini $ -w application.debug : true
ini $ -w application.name : "lil playground"
ini $ -c