| name | env-manager |
| description | 环境变量管理器:扫描、校验、同步 .env 文件,生成安全配置模板 |
环境变量管理器
触发条件
当用户要求管理环境变量、.env 文件、配置同步、Secrets 检查时激活。
工作流程
1. 扫描项目
- 检测所有
.env* 文件(.env / .env.local / .env.development / .env.production)
- 扫描代码中引用的环境变量(
process.env.XXX / os.environ['XXX'] / os.getenv('XXX'))
- 识别已定义但未使用的变量(死配置)
- 识别已使用但未定义的变量(缺失配置)
2. 校验分析
- 检查必填变量是否有默认值
- 验证 URL 格式、端口号范围、布尔值格式
- 检测硬编码的敏感信息(API Key / Token / Password)
- 对比 .env.example 与实际 .env 文件的差异
3. 生成/修复
- 生成
.env.example 模板(仅包含变量名和说明,不含真实值)
- 生成
.env.schema.json(结构化校验规则)
- 检测到硬编码密钥时,建议迁移到环境变量
- 生成
dotenv 加载配置(针对不同框架)
4. 同步
- 在 monorepo 中同步共享环境变量
- 生成 Docker Compose 的 env_file 配置
- 生成 CI/CD 的 Secrets 配置清单
输出格式
.env.example 示例
APP_NAME=my-app
APP_ENV=development
APP_PORT=3000
APP_DEBUG=true
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mydb
DB_USER=
DB_PASSWORD=
REDIS_URL=
JWT_SECRET=
校验报告示例
📋 环境变量分析报告
==================
✅ 定义且使用: 12 个
⚠️ 定义未使用: 2 个(S3_BUCKET, OLD_API_KEY)
❌ 使用未定义: 1 个(SENDGRID_API_KEY)
🔒 硬编码敏感信息: 1 处(src/auth.js:23)
建议:
1. 删除 .env 中的 S3_BUCKET 和 OLD_API_KEY
2. 在 .env 中添加 SENDGRID_API_KEY
3. 将 src/auth.js:23 的硬编码 token 迁移到环境变量
安全检查清单
常见陷阱
- Next.js:只有
NEXT_PUBLIC_ 前缀的变量会暴露给客户端,后端专用变量不要加此前缀
- Docker:构建时的 ARG 和运行时的 ENV 是不同的,不要混淆
- Create React App:
.env 中的变量必须以 REACT_APP_ 开头才会被注入
- Vite:使用
VITE_ 前缀暴露变量给客户端
- monorepo:根目录的
.env 不会自动被子包读取,需要显式配置
框架适配
| 框架 | 客户端前缀 | 配置文件 | 加载方式 |
|---|
| Next.js | NEXT_PUBLIC_ | .env.local | 自动 |
| Vite | VITE_ | .env | 自动 |
| CRA | REACT_APP_ | .env | 自动 |
| Nuxt | NUXT_PUBLIC_ | .env | 自动 |
| Vue CLI | VUE_APP_ | .env | 自动 |