目标
构建支持引号、转义、注释、多行值的 .env 解析器,叠加文件、进程环境与 CLI 三层并追踪来源,按 schema 声明校验必需键与类型,并扫描暂存文件中形似密钥的值防止入库。
要点
解析是字符级状态机而非正则:单引号内不转义、双引号内反斜杠转义、注释只在值外生效、未闭合的双引号跨物理行续读 PEM;check 一次报出全部违规而非逐个失败三轮 CI;扫描器以锚定模式在文件字节上工作,用精确度换召回避免狼来了。
提示
007 这类前导零必须强制字符串类型——电话号码与邮编长得像数字;.dedupe 模式的屏蔽预览只给辨认不给复制。
验证
表驱动测试枚举全部引号与转义形态;植入各类密钥的 fixture 树逐行号断言命中且对压缩 JS 零误报。 项目目录骨架:
envm/
├── bin/envm.js
├── src/
│ ├── parser.js
│ ├── merge.js
│ ├── schema.js
│ └── scan.js
├── test/
│ ├── parser.test.js
│ └── scan.test.js
├── env.schema.json
└── package.json
实施阶段:Env file tokenizer and parser → Layered merge with origins → Schema check command → Secrets scanner。