实用工具
输入
结果
结果会显示在这里。.env 文件看起来简单到不可能写错,直到某个值里出现了 #、引号或换行。这个工具用逐行移植自 motdotla/dotenv 的解析器来读取——大多数 Node 项目就是用这个包加载环境变量的——所以你在这里看到的,就是 process.env 里实际会有的内容。可以转成 JSON 交给密钥管理服务或测试夹具,转成 docker run 的 -e 参数,或者 Compose 文件的 environment: 段;也可以反过来,把 JSON 对象转成一份读回来不走样的 .env 文件。
它是怎么工作的
- 不带引号的值里只要出现 #,后面就算注释,哪怕在值的中间——这是 dotenv 的规则,也是 URL 被截断的常见原因。
- 单引号和反引号里的值按字面读取,只有双引号会把 \n 变成真正的换行。
- export KEY=value 和 KEY: value 两种写法都支持;同一个键定义两次以最后一次为准,统计里会列出重复的键。
- 既不是空行、也不是注释、又没被识别成变量的行,会按行号列出来,拼写错误不会悄无声息地消失。
- docker 参数会做 shell 转义;Compose 输出会给 YAML 可能误读的值加引号,true、null、5432 这类值仍是字符串,不会变成布尔值、空值或数字。
你的数据去了哪里
哪也没去。本工具完全在你的浏览器里运行:你粘贴的文本由页面处理,不会传输到任何服务器,也不会写进任何日志。
本工具免费且无需登录,运行结果只存在于你当前的页面里,不会被保存到任何地方。
它要花多少
本工具完全免费,不需要登录,也不消耗积分。
常见问题
- 我的 URL 为什么在 # 处被截断了?
- dotenv 把不带引号的值里任何位置的 # 都当作注释开头,所以 URL=https://example.com/#section 读出来会止于斜杠。给值加上引号,写成 URL="https://example.com/#section",# 就能保留下来。
- 私钥这种多行的值怎么写进 .env?
- 要么用双引号并在一行里写 \n 转义,要么用双引号跨多行书写,dotenv 两种都能读。JSON 转 .env 方向会生成单行转义的写法,这种写法粘贴到 CI 的密钥设置里也不会出问题;只有同时含有换行和双引号的值会用反引号跨多行书写,因为 dotenv 没有别的办法把它原样读回来。
- 支持展开 ${VARIABLE} 这样的引用吗?
- 不支持,dotenv 本身也不支持。变量展开是另一个包 dotenv-expand 的工作,Docker Compose 也有自己的插值规则。这里显示的值与 dotenv 的 parse 返回结果完全一致,引用会按字面文本保留。
- 把生产环境的密钥贴进来合适吗?
- 内容不会离开页面,转换过程不发任何请求;但装满生产凭据的 .env 在哪里都应该尽量少经手。先把值换成占位符是个好习惯,结构的转换结果完全一样。
背后的开源项目
本工具是独立实现,并未打包第三方库。motdotla/dotenv(BSD-2-Clause)在代码层面做的是同一件事——如果你需要在自己的程序里实现它,从那里开始,而不是调用一个网页。
motdotla/dotenv也常被称作
- .env转json
- env文件转json
- json转env
- dotenv解析
- env转docker环境变量
- docker compose环境变量