Loading…

关于 在线.env格式化工具

让您的dotenv文件可读、可预测且安全共享。此.env格式化工具解析KEY=VALUE行,清理间距,保留注释,并帮助您在提交或为团队成员生成无密钥的`.env.example`前标准化结构。兼容Node `dotenv`、`python-dotenv`、Ruby `dotenv`及大多数其他dotenv风格加载器。

此.env格式化工具助您实现

  • 标准化`KEY=VALUE`行,同时保留注释和空行以便于人工阅读分组
  • 清理`=`及值周围的间距,便于扫描和审查时获得更紧凑的差异对比
  • 发现重复键,让您明确运行时实际生效的变量而非猜测
  • 修剪尾部空白,并可通过**插入最终换行**选项确保文件末尾有换行符
  • 保留注释行(`# ...`)并保持值内引用的`#`字符原样不变
  • 保持如`${VAR}`的占位符和转义序列原样,不进行扩展
  • 通过统一LF/CRLF布局并避免BOM问题,与跨平台项目良好兼容
  • 轻松生成无密钥的`.env.example`(复制键和结构,移除生产环境值)
  • 友好编辑器:粘贴或上传`.env`风格文件,预览结果,然后复制或下载清理后的输出

🔧 如何清理和格式化您的.env文件 for env-formatter

1

1. 粘贴或上传您的 .env 文件

将您的 `.env` 文件拖入编辑器或直接粘贴内容。该工具专为典型的 dotenv 格式设计,如 `.env`、`.env.local`、`.env.production`、`.env.test`、`.env.staging`、`.env.example` 等。

2

2. 查看并调整格式化选项

启用或禁用可用选项(如**插入最终换行符**),并决定如何组织键和注释。许多团队在此步骤强制执行一致的分组——例如,`APP_`、`DB_`、`NEXT_PUBLIC_` 部分。

3

3. 预览、复制或下载

查看清理后的输出,检查重复项和注释是否正确,然后将其复制回编辑器或下载格式化后的 `.env`。使用标准化结构作为 `.env.example` 或其他环境变体的基础。

技术规格

支持的文件与类型

该格式化工具处理标准的 dotenv 风格配置文件,包括常见的框架约定。

扩展名 / 模式类型典型用途
.env基础配置所有环境的默认设置
.env.local本地覆盖机器特定(通常被 Git 忽略)
.env.development环境变体开发设置
.env.production环境变体部署设置
.env.test环境变体CI / 单元测试
.env.staging环境变体暂存或预览配置
.env.example / .env.sample模板共享示例文件,不含真实密钥
MIME 类型text/plain, text/x-dotenv, application/x-env编辑器和工具常用的内容类型

解析规则(dotenv风格)

该格式化器设计为兼容跨语言流行的dotenv解析器。

方面行为备注
区分大小写,通常为`A–Z`、数字和`_`推荐使用UPPER_SNAKE_CASE以提高可读性
赋值形式为`KEY=VALUE`的行`=`周围的空格和值会被格式化器规范化
注释以`#`开头的行引号内的`#`被视为值的一部分
引号单引号`'…'`或双引号`"…"`双引号内保留转义字符如`\n`和`\t`
插值`${VAR}`保持原样不执行扩展或类shell的求值
空行保留以维持逻辑分区仍可按需手动折叠或重新分组
重复项相同键的多行会被显示典型dotenv行为:运行时最后一个值生效

规范化与换行符

格式化器旨在减少差异中特定平台的噪音:`=`周围的空格、杂散的尾随空格和最终换行符可被规范化。**插入最终换行符**选项确保EOF换行符,使Git和不同编辑器即使在LF/CRLF差异下也能保持同步。

隐私与安全

格式化由专用于此工具的安全后端处理,仅用于临时处理——不联系任何第三方API。然而,最安全的做法仍是避免将生产环境密钥粘贴到基于浏览器的工具中:优先编辑清理过的`.env.example`文件,并将真实密钥保存在保险库或CI密钥存储中。

命令行替代方案与代码片段

更喜欢终端?以下是一些使用常见CLI工具模拟此格式化器部分行为的构建块。

Linux/macOS

排序键(基础版,忽略注释/空行)

grep -v '^\s*#' .env | grep -v '^\s*$' | sort > sorted.env

按字母顺序排序非注释行,使配置键更易于扫描和比较。

使用awk对齐`=`

awk -F '=' 'BEGIN{max=0} /^[[:space:]]*#/||NF<2{next} {gsub(/[[:space:]]+$/,"",$1); if(length($1)>max) max=length($1)} END{print max}' .env | xargs -I{} awk -F '=' -v w={} 'BEGIN{OFS="="} /^[[:space:]]*#/||NF<2{print; next} {k=$1; sub(/[[:space:]]+$/,"",k); v=substr($0,index($0,"=")+1); gsub(/^\s+|\s+$/,"",v); printf("% -" w "s = %s\n", k, v)}' .env > aligned.env

双遍awk脚本,先测量最宽的键,然后将所有`KEY = VALUE`赋值对齐到该宽度。

Windows (PowerShell)

排序并去重键(保留最后一个值)

(Get-Content .env) | Where-Object {$_ -notmatch '^\s*#' -and $_ -notmatch '^\s*$'} | Group-Object { $_.Split('=')[0].Trim() } -AsHashTable -AsString | ForEach-Object { $_.Value[-1] } | Set-Content cleaned.env

按键分组行并仅写入最后一次出现,模拟大多数dotenv加载器处理重复项的方式。

Node.js (跨平台)

最小化格式化器:解析、排序、对齐、写入

node -e "const fs=require('fs');const s=fs.readFileSync('.env','utf8');const lines=s.split(/\r?\n/);const kv=[];const others=[];for(const l of lines){if(!l||/^\s*#/.test(l)||!l.includes('=')){others.push(l);continue;}const i=l.indexOf('=');kv.push([l.slice(0,i).trim(),l.slice(i+1).trim()]);}kv.sort((a,b)=>a[0].localeCompare(b[0]));const w=Math.max(...kv.map(([k])=>k.length),0);const out=[...kv.map(([k,v])=>k.padEnd(w)+" = "+v),...others];fs.writeFileSync('formatted.env',out.join('\n'));"

一个紧凑的Node脚本,可适配为本地或CI使用的专用格式化器。

常见 .env 格式化器使用场景

生产就绪性与整洁性

  • 在部署关键服务前捕获意外的重复键
  • 规范化空白和文件末尾换行以避免杂乱的差异
  • 在生成`.env.example`或密钥模板前标准化结构
# 生产 .env
NODE_ENV=production
API_URL=https://api.example.com
LOG_LEVEL=info

团队协作与入职

  • 通过在所有服务中强制执行规范的.env布局来减少PR噪音
  • 提交干净的`.env.example`而非真实密钥,使入职更安全
  • 帮助新团队成员快速一览所有必需的配置键
# .env.example
API_URL=
API_KEY=
DEBUG=false

CI 与质量门控

  • 添加检查确保无重复键进入`main`或`master`分支
  • 如果`.env`文件违反基本格式化或命名约定,则构建失败
  • 保持配置审查专注于值和语义,而非间距细节

❓ Frequently Asked Questions

如何处理重复键?

大多数dotenv加载器将给定键的最后一个值视为有效值。此格式化器旨在清晰显示重复键,以便您决定保留哪些条目,而不是静默地交付冲突配置。

注释和空行会被保留吗?

是的。完整注释行会被保留,空行也会保留,以便您的逻辑分组保持可读性。如果您偏好更密集或更紧凑的布局,仍可手动调整部分间距。

是否展开${VAR}引用?

不。像`${DB_HOST}`这样的占位符被视为纯文本。格式化器不会展开、验证或执行环境引用,因此您完全控制在运行时如何处理插值。

粘贴真实密钥安全吗?

格式化器设计为在此工具后端瞬时处理数据,不联系外部API。尽管如此,最安全的做法是避免将生产密钥粘贴到任何基于浏览器的工具中:仅提交清理过的`.env.example`文件,并依赖专用密钥管理器或CI密钥存储来管理真实值。

CRLF与LF及BOM问题如何处理?

不一致的换行符和杂散的UTF-8 BOM常常导致难看的差异和解析意外。将此格式化工具与您的编辑器设置配合使用(例如,始终以LF且无BOM保存),以确保dotenv文件在操作系统和IDE之间保持一致。

这会改变我的应用程序读取环境文件的方式吗?

不会。目标是在保持语义完整的同时使文件更易于阅读。假设原始dotenv文件对您的加载器有效,键、值和注释在功能上保持不变。

Pro Tips

Best Practice

切勿将真实密钥提交到Git。提交包含密钥和安全提示的`.env.example`,并从保险库、CI密钥存储或本地覆盖加载实际值。

Best Practice

按领域(`APP_`、`DB_`、`NEXT_PUBLIC_`等)分组密钥,并保持每组顺序一致,以减少新读者的认知负担。

Best Practice

通过预提交钩子或CI检查强制执行单一规范的.env样式,这样您就无需在代码审查中争论空格问题。

Best Practice

引用包含空格、`#`、`=`或shell保留字符的值,以避免在不同dotenv实现中出现细微的解析问题。

Additional Resources

Other Tools