解析 .env 文件,验证变量并导出为 JSON、YAML 或 Docker 参数。
| # | 键 | 值 |
|---|---|---|
| 1 | # 应用配置 | |
| 2 | NODE_ENV | production |
| 3 | PORT | 3000 |
| 4 | HOST | 0.0.0.0 |
| 6 | # 数据库 | |
| 7 | DATABASE_URL | postgres://user:pass@localhost:5432/mydb |
| 8 | REDIS_URL | redis://localhost:6379 |
| 10 | # 身份验证 | |
| 11 | JWT_SECRET | super-secret-jwt-key-2024 |
| 12 | JWT_EXPIRES_IN | 7d |
| 13 | SESSION_COOKIE_NAME | __session |
| 15 | # 第三方 API 密钥 | |
| 16 | STRIPE_SECRET_KEY | sk_live_51abc123 |
| 17 | SENDGRID_API_KEY | SG.xxxxx.yyyyy |
| 18 | AWS_ACCESS_KEY_ID | AKIAIOSFODNN7EXAMPLE |
| 19 | AWS_SECRET_ACCESS_KEY | wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY |
| 20 | AWS_REGION | us-east-1 |
| 22 | # 功能开关 | |
| 23 | ENABLE_ANALYTICS | true |
| 24 | ENABLE_RATE_LIMITING | false |
| 25 | DEBUG | false |
{
"NODE_ENV": "production",
"PORT": "3000",
"HOST": "0.0.0.0",
"DATABASE_URL": "postgres://user:pass@localhost:5432/mydb",
"REDIS_URL": "redis://localhost:6379",
"JWT_SECRET": "super-secret-jwt-key-2024",
"JWT_EXPIRES_IN": "7d",
"SESSION_COOKIE_NAME": "__session",
"STRIPE_SECRET_KEY": "sk_live_51abc123",
"SENDGRID_API_KEY": "SG.xxxxx.yyyyy",
"AWS_ACCESS_KEY_ID": "AKIAIOSFODNN7EXAMPLE",
"AWS_SECRET_ACCESS_KEY": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
"AWS_REGION": "us-east-1",
"ENABLE_ANALYTICS": "true",
"ENABLE_RATE_LIMITING": "false",
"DEBUG": "false"
}使用结构化输出解析和检查 .env 样式配置值,以在部署和事件分类会话之前捕获格式错误。
它读取键值环境变量文本并清楚地突出显示解析结果。
它有助于检测部署配置中的引用、转义和重复密钥问题。
它通过在将机密注入运行时环境之前验证配置文件,提升发布安全性。
基本环境文件
APP_ENV=production API_TIMEOUT=8000 FEATURE_FLAGS=search,seo
引用值
DATABASE_URL="postgres://user:pass@host/db" JWT_ISSUER='svc_42'
边缘情况
EMPTY_VALUE= SPACED="42 55"
已解析的映射
{ APP_ENV: "production", API_TIMEOUT: "8000", FEATURE_FLAGS: "search,seo" }验证说明
未检测到重复键;已成功解析 3 个变量。
故障排除说明
共享解析器输出时保持隐藏的秘密值。
等号周围出现意外空格
使用 KEY=VALUE 格式,不含意外空格。
未闭合引号会中断解析
确保单引号和双引号是平衡的。
重复的键会影响较早的值
为每个变量键保留一个权威定义。
值中意外包含的注释
将注释放在自己的行上或根据需要转义。
环境变量解析器 应作为交付流程中的快速校验步骤,在提交、发布和交接前都建议执行一次。
这是否验证秘密的正确性?
它验证语法和结构,而不是验证秘密对外部服务是否有效。
我可以解析多行值吗?
某些格式允许它们,但解析器行为取决于引用约定。
.env 文件是否应该提交到 git?
通常不;提交模板并在安全存储中保留真正的秘密。
为什么暂存对同一文件的行为不同?
运行时注入顺序和平台默认值可以覆盖值。