跳到正文
envdiff

环境变量对比

预发环境一切正常,生产环境却出错。对比一下 env 文件吧。

粘贴两个 env 文件,如果有 .env.example 也一起贴上。Env Diff 会逐个键对齐,遮盖所有值,并指出缺失的键、不同的值、生产环境里的测试密钥、暴露给浏览器的密钥,以及没人替换的占位符。

查看全部检查项
- FEATURE_NEW_CHECKOUT=true
+ OPENAI_API_KEY=chan••••占位值
~ APP_URL=http••••••••未加密的 http 地址
~ NEXT_PUBLIC_STRIPE_KEY=pk_l••••••••
  STRIPE_SECRET_KEY=sk_t••••••••测试或沙盒密钥
  JWT_SECRET=shar••••••••两边使用同一密钥
示例对比。所有值均为虚构,遮盖方式与工具处理你的数据时相同。

这是什么

一个免费、私密的环境变量对比工具。支持 dotenv、export 行、引号、多行值、JSON 和简单的 YAML。

适合谁

独立发布的开发者、版本负责人、DevOps 工程师,以及任何曾因生产环境少了一个键而白白耗掉一个晚上的人。

解决什么问题

配置漂移。代码有评审和测试,env 文件通常没有,于是一个遗漏的键或生产环境里的测试密钥就悄悄溜了过去。

对比两个环境

解析和对比都在当前标签页完成。不上传、不记录、不保存任何内容。

支持 dotenv、JSON 或 KEY: value 格式。
支持 dotenv、JSON 或 KEY: value 格式。
可选。粘贴你的 .env.example,作为每个环境都必须具备的键清单。

除非你主动打开,值始终保持遮盖。报告中永远不包含值。

$ env diff ▌

还没有对比内容

粘贴两个 env 文件,或载入示例文件,看看每一类检查结果。

值永远不会离开本页面。报告和 CSV 只列出键和检查结果。

各项检查的含义

环境 B 的结果按生产环境处理。暴露给浏览器的密钥无论在哪一边都会计入。

  • 密钥暴露给浏览器

    NEXT_PUBLIC 或 VITE 这类前缀会把值打包进 JavaScript。任何人都能读到。

  • 测试或沙盒密钥

    像 sk_test 这样的密钥不会收取真实付款,也不会发出真实邮件。在预发环境没问题,放到生产环境就是一次无声的故障。

  • 指向 localhost

    数据库、缓存或 API 地址只在开发者本机可用。到了生产环境,要么连接失败,要么连到错误的服务。

  • 占位值

    changeme、xxx、TODO 或尖括号。有人复制了示例却从未填写。

  • 两边使用同一密钥

    预发和生产共用一个密钥,预发一旦泄露,生产也随之失守。

  • 未加密的 http 地址

    公开地址没有使用 https。Cookie、令牌和跳转可能失效或泄露。

  • 调试已开启

    调试开关会向访客展示堆栈和内部细节,还会拖慢整个应用。

  • 密钥过短

    少于 12 个字符的密钥、令牌或密码很容易被猜出。

  • 引用了未定义的变量

    值里引用的变量在同一文件中没有定义,展开后什么都没有。

  • 为空

    键存在但没有值。很多库会把它当作已设置,然后以奇怪的方式出错。

使用方法

  1. 粘贴环境 A

    通常是预发环境或本地文件。可以按你的习惯修改标签名。

  2. 粘贴环境 B

    通常是生产环境。从托管平台导出,或从密钥管理工具中复制。

  3. 添加模板

    可选。粘贴 .env.example,看看缺了哪些必需的键,又有哪些键没有写进文档。

  4. 查看差异

    缺失的键排在最前,其次是不同的值,最后是相同的值。每一行都会标出风险值。

  5. 修复并分享

    下载包含全部键的新 .env.example,并把报告复制到发布检查清单里。

注意事项

  • 检查只看名称和值的模式,无法判断某个密钥在服务商那里是否真的有效。
  • 不会执行命令替换等 shell 功能,只检查普通的变量引用。
  • YAML 只支持扁平的 KEY: value 行,不支持嵌套结构。
  • 显示值只影响屏幕上的内容。关闭标签页即可清除一切。

常见问题

在这里粘贴真实密钥安全吗?

页面不会把你粘贴的内容发送到任何地方,报告里也没有值。不过最稳妥的习惯是:只要密钥曾出现在共享屏幕上,就把它轮换掉。

为什么把 B 当作生产环境?

大多数人是拿预发环境和生产环境对比。把即将发布的环境放在 B,风险检查就会作用在它上面。

指纹是什么?

每个值的简短 SHA 256 摘要。它能让你看出两个值不同,同时不暴露其中任何一个。

能对比两个以上的文件吗?

可以用同一个模板两两对比。模板让每次对比都锚定在同一份键清单上。

联系开发者

有问题、想法或工作机会?欢迎通过 X 或 Telegram 联系。

支持开发者

如果这个工具帮你节省了时间,可以用自己的钱包向这个 EVM 地址打赏。

0xd28Fd90eD69092bd01598f237aad33a0cc9c3EeA