.env 对比工具

部署前后或 staging 与 production 的 .env 差异是「配置改了但服务行为未变」的常见根因。本工具按 key 对比两份环境变量文本,列出新增、删除与值变更项,全部在浏览器本地处理。若配置以 YAML 存储,可先用 yaml-converter 转为 JSON 再用 json-diff 做深度对比。

阅读完整指南: Docker Compose 与 Nginx:配置生成与上线清单 →

隐私提示:本地解析,不上传服务器。

↓ 在下方输入区粘贴内容,结果会立即显示

对比两份环境变量文件,列出新增、删除与变更项。

.env A(左侧)

.env B(右侧)

差异输出

差异输出

~ API_URL: http://localhost -> https://api.example.com
~ DEBUG: true -> false
+ NEW=1

注释说明

符号说明

+ 仅在 B 中存在; - 仅在 A 中存在; ~ 同 key 值不同; 空格前缀表示未变化。以 # 开头的行会被忽略。

部署前后或 staging 与 production 的 .env 差异是「配置改了但服务行为未变」的常见根因。本工具按 key 对比两份环境变量文本,列出新增、删除与值变更项,全部在浏览器本地处理。若配置以 YAML 存储,可先用 yaml-converter 转为 JSON 再用 json-diff 做深度对比。

快速开始

  1. 粘贴 A 与 B

    KEY=VALUE 格式; # 注释行自动忽略。

  2. 阅读差异

    + / - / ~ 符号标记变化项。

功能与使用场景

对比两份 .env 或 KEY=VALUE 列表的差异,高亮新增、删除与修改项,忽略注释与空行可选。

staging 与 production 配置核对、部署前变更审查、Docker Compose 环境变量迁移时使用。

与 JSON 对比的区别

本工具按 env 行解析; 适合 .env 与 docker-compose 环境块。

典型工作流

当你在不同环境(如开发、测试、生产)间迁移配置时,.env 文件常会变动。使用本工具时,先将旧环境内容粘贴到左侧,新环境内容粘贴到右侧。工具会立即高亮显示新增变量(绿色)、被删除变量(红色)以及值被修改的变量(黄色)。

部署前可快速检查敏感变量变更。例如数据库密码从本地开发值切换为生产值时会立即被标记。团队协作时,用截图分享差异结果比直接发送 .env 文件更安全,避免意外泄露未加密的敏感信息。

KEY=VALUE 对比

按 key 比较两份 .env,忽略空行与 comment(#)。值变更高亮;新增 key 可能缺 prod secret rotation。部署前 diff staging vs prod 是 release checklist 项。

export 顺序无关;duplicate key 后者 wins——源文件应 dedupe。

与 YAML/JSON 配置

K8s ConfigMap 常 YAML;yaml-converter → json-diff 深度对比 nested。env-diff 适合 flat env;nested 用 json-diff。

DATABASE_URL 变更需 migration 计划,非仅 diff 通过。

秘密处理

diff 结果截图前 redact 值;pii-scanner 扫 export。勿将 prod .env 贴 ticket——用 key 名 diff + 人工确认值。

VITE_ 前缀变量会打包进前端 bundle——diff 时特别注意暴露。

环境漂移排障流程

staging 正常、生产异常时:导出两边 env(脱敏)→ 本工具 diff → 标出仅生产缺失/多余的键。优先查密钥名拼写、功能开关默认值、以及「只在生产注入」的第三方回调 URL。

把通过的对照表存进事故文档;下次变更用同一模板。

密钥永不进入 diff 原文

导出前把值替换为长度占位或哈希指纹。本工具用于键集合与结构差异,不是为了把生产密钥贴进聊天。

CI 中可对允许键列表做断言;禁止的键出现即失败。

示例

示例

Input

DEBUG=true vs DEBUG=false

FAQ

支持 export 前缀吗?

当前按裸 KEY=VALUE 解析; 如有 export 请先手动去掉。

能否对比非.env格式的键值对文件?

可以。工具本质上解析键值对结构,类似INI格式的配置文件(如config.ini)也能处理。但注释语法可能不同——以#开头的行在.env中是注释,在其他格式中可能是有效内容。

支持 quoted values 吗?

支持常见 " 与 ' 包裹;转义规则依 parser。

multiline value?

可能需特定格式;复杂 value 建议 JSON config。

上传 .env 吗?

否,本地 diff。

与 git diff 区别?

env-diff 语义化 key;git diff 行级。

支持 dotenv 多文件吗?

分别导入再 diff,或先合并为单一有效配置再比较。注意后者会丢失「来源文件」信息。

空字符串和缺失键一样吗?

不一样。空字符串通常表示显式关闭;缺失可能走代码默认值。diff 应区分这两种。