此.env格式化工具助您实现
- 标准化`KEY=VALUE`行,同时保留注释和空行以便于人工阅读分组
- 清理`=`及值周围的间距,便于扫描和审查时获得更紧凑的差异对比
- 发现重复键,让您明确运行时实际生效的变量而非猜测
- 修剪尾部空白,并可通过**插入最终换行**选项确保文件末尾有换行符
- 保留注释行(`# ...`)并保持值内引用的`#`字符原样不变
- 保持如`${VAR}`的占位符和转义序列原样,不进行扩展
- 通过统一LF/CRLF布局并避免BOM问题,与跨平台项目良好兼容
- 轻松生成无密钥的`.env.example`(复制键和结构,移除生产环境值)
- 友好编辑器:粘贴或上传`.env`风格文件,预览结果,然后复制或下载清理后的输出
🔧 如何清理和格式化您的.env文件 for env-formatter
1. 粘贴或上传您的 .env 文件
将您的 `.env` 文件拖入编辑器或直接粘贴内容。该工具专为典型的 dotenv 格式设计,如 `.env`、`.env.local`、`.env.production`、`.env.test`、`.env.staging`、`.env.example` 等。
2. 查看并调整格式化选项
启用或禁用可用选项(如**插入最终换行符**),并决定如何组织键和注释。许多团队在此步骤强制执行一致的分组——例如,`APP_`、`DB_`、`NEXT_PUBLIC_` 部分。
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=falseCI 与质量门控
- 添加检查确保无重复键进入`main`或`master`分支
- 如果`.env`文件违反基本格式化或命名约定,则构建失败
- 保持配置审查专注于值和语义,而非间距细节
❓ Frequently Asked Questions
如何处理重复键?
注释和空行会被保留吗?
是否展开${VAR}引用?
粘贴真实密钥安全吗?
API。尽管如此,最安全的做法是避免将生产密钥粘贴到任何基于浏览器的工具中:仅提交清理过的`.env.example`文件,并依赖专用密钥管理器或CI密钥存储来管理真实值。CRLF与LF及BOM问题如何处理?
这会改变我的应用程序读取环境文件的方式吗?
Pro Tips
切勿将真实密钥提交到Git。提交包含密钥和安全提示的`.env.example`,并从保险库、CI密钥存储或本地覆盖加载实际值。
按领域(`APP_`、`DB_`、`NEXT_PUBLIC_`等)分组密钥,并保持每组顺序一致,以减少新读者的认知负担。
通过预提交钩子或CI检查强制执行单一规范的.env样式,这样您就无需在代码审查中争论空格问题。
引用包含空格、`#`、`=`或shell保留字符的值,以避免在不同dotenv实现中出现细微的解析问题。
Additional Resources
Other Tools
- CSS 美化器
- HTML 美化器
- JavaScript 美化器
- PHP 美化器
- 颜色选择器
- 精灵图提取器
- Base64 解码器
- Base64 编码器
- C# 格式化器
- CSV 格式化器
- Dockerfile Formatter
- Elm 格式化器
- Go 格式化器
- GraphQL 格式化器
- HCL 格式化器
- INI 格式化器
- JSON 格式化器
- LaTeX 格式化器
- Markdown 格式化器
- Objective-C 格式化器
- Php Formatter
- Proto 格式化器
- Python 格式化器
- Ruby 格式化器
- Rust 格式化器
- Scala 格式化器
- Shell 脚本格式化器
- SQL 格式化器
- SVG 格式化工具
- Swift 格式化工具
- TOML 格式化工具
- Typescript Formatter
- XML 格式化工具
- YAML 格式化工具
- Yarn 格式化工具
- CSS 压缩器
- Html Minifier
- Javascript Minifier
- JSON 压缩器
- XML 压缩器
- HTTP 头部查看器
- PDF 转文本
- 正则表达式测试器
- 搜索引擎排名检查器
- Whois 查询