不能。config.cson 是 CoffeeScript 对象字面量语法,依赖缩进、冒号后空格、键名不加引号等规则,JSON 解析器无法识别;cson-as-json 是运行时桥接工具,仅在 Atom 启动时解析 CSON 为 JS 对象供插件读取,并不转换或修改文件。

config.cson 能不能直接当 JSON 用?
不能。把 config.cson 文件后缀改成 .json 或扔进 JSON 解析器,99% 会报错。CSON 不是 JSON 的变体,它是 CoffeeScript 对象字面量语法,依赖缩进、冒号后必须空格、键名不加引号(除非含空格或点号)、数组末尾不能有逗号——这些规则 JSON 完全不认。
cson-as-json 插件到底干啥用?
它不是“转换器”,而是**运行时桥接工具**:在 Atom 启动时,把 config.cson 按 CSON 规则解析成 JS 对象,再暴露给其他插件以 JSON-like 方式读取(比如通过 atom.config.get('core.disabledPackages'))。你改的还是 config.cson,插件只是帮你绕过手动 parse 的麻烦,不生成新文件,也不改变配置源。
- 它不修改你的
config.cson文件内容 - 它不提供“导出为 JSON”按钮或命令
- 它只对插件开发者有意义:省得自己写
require('cson').parseFileSync
想看 config.cson 对应的 JSON 结构?手动解析更可靠
真要调试结构或迁移配置,别信插件输出,直接用 Node.js 命令行验证:
使用 JSON Schema 验证 JSON 数据,从示例 JSON 生成 schema,并将其转换为 TypeScript 接口、Python 数据类或 Markdown 文档。
node -e "console.log(JSON.stringify(require('cson').parseFileSync(process.argv[1]), null, 2))" ~/.atom/config.cson
注意:require('cson') 是 Atom 内置模块,外部 Node 环境需先 npm install cson;如果提示 Unexpected token,说明 config.cson 本身有语法错误——比如缩进不一致、多写了逗号、注释格式错("welcome"#注释 ❌,必须是 "welcome" #注释 ✅)。
真正需要“转 JSON”的场景,通常暴露的是认知偏差
多数人想“转 JSON”,其实是为以下目的,但都有更直接解法:
- 想用脚本批量改配置 → 直接读写
config.cson文件,用csonnpm 包 parse + stringify - 想对比两份配置差异 → 用
diff ~/.atom/config.cson ~/backup/config.cson,别先转 JSON 再 diff - 想导入到其他编辑器 → VS Code 的
settings.json和 Atom 的config.cson语义不同,硬转字段会丢行为(比如tree-view.openFilesWithOneClick在 VS Code 里没对应项)
最常被忽略的一点:Atom 所有配置项的文档和类型定义,都基于 CSON 原生结构。强行套 JSON 模型,反而更容易写错 scope 键(如 "source.c" 必须带引号),或误删缩进导致整个 block 失效。

















