Dotenvx 使用指南
Dotenvx 是由 dotenv 原作者开发的下一代环境变量管理工具,提供了加密、多环境支持等高级功能。它是传统 dotenv 的安全升级版本,特别适合生产环境使用。
graph TB
subgraph "开发环境"
A[开发者] --> B[.env.local]
A --> C[.env.development]
B --> D[dotenvx run]
C --> D
end
subgraph "Dotenvx 核心"
D --> I[环境变量解析]
I --> J[变量扩展]
J --> K[命令替换]
K --> L[加密/解密]
L --> M[应用程序]
end
style A fill:#e1f5fe
style M fill:#c8e6c9
style L fill:#fff3e0
🔐 加密支持
Section titled “🔐 加密支持”- 使用 AES-256 加密和椭圆曲线密码学 (Secp256k1)
- 支持将加密的 .env 文件安全提交到代码仓库
- 公钥加密,私钥解密的分离式安全模型
🌍 跨平台运行
Section titled “🌍 跨平台运行”- 支持 Node.js、Deno、Bun、Python、PHP、Ruby、Go、Rust、Java、.NET 等
- 统一的命令行接口,无需修改现有代码
🔄 多环境管理
Section titled “🔄 多环境管理”- 支持 .env.development、.env.production、.env.local 等多环境文件
- 内置框架约定支持(如 Next.js)
- 灵活的环境文件组合加载
NPM 安装
Section titled “NPM 安装”npm install @dotenvx/dotenvx --savenpm install @dotenvx/dotenvx -g# 创建 .env 文件echo "HELLO=World" > .env
# 使用 dotenvx 运行dotenvx run -- node index.js# 创建生产环境配置echo "HELLO=production" > .env.production
# 指定环境文件运行dotenvx run -f .env.production -- node index.js# 设置加密的环境变量dotenvx set HELLO "production (encrypted)" -f .env.production加密后的文件结构
Section titled “加密后的文件结构”.env.production
#/ public-key encryption for .env files /#/ [how it works](https://dotenvx.com/encryption) /#/----------------------------------------------------------/DOTENV_PUBLIC_KEY_PRODUCTION="038759c073282f2efa6c5ffea8f66ad9cf0de7a855df8db242771f44d7472b63cb"
# .env.productionHELLO="encrypted:BGMyAFNH6UjetjWsYHUkbndQosw/barJwdynj9wXQmlucqsM2TxCAxCwXNKQfbA8axd2TCcUJaWVltrhcUZdtDo87caC7aN2G9D7m3/vQVpcCffdYeaKtlrGyGB9IHJzKOrXH3jEheKQBPLv1L6foObYREAeRzw=".env.keys (不要提交到代码仓库)
#/------------------!DOTENV_PRIVATE_KEYS!-------------------/#/ private decryption keys. DO NOT commit to source control /#/ [how it works](https://dotenvx.com/encryption) /# .env.productionDOTENV_PRIVATE_KEY_PRODUCTION="bd7c50b352ce23973ec9db355d70212305a0baaade92f0165f02915b213bfbe2"替换传统 dotenv
Section titled “替换传统 dotenv”// 之前require('dotenv').config()
// 之后require('@dotenvx/dotenvx').config()ES6 模块
Section titled “ES6 模块”import { config } from '@dotenvx/dotenvx'config()BASE_URL=https://api.example.comAPI_ENDPOINT=${BASE_URL}/v1/usersDATABASE_URL=postgres://user:pass@localhost:5432/${DB_NAME}CURRENT_BRANCH=$(git branch --show-current)BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ")COMMIT_SHA=$(git rev-parse HEAD)- ✅ 提交加密的 .env 文件到代码仓库
- ❌ 不要提交 .env.keys 文件
- ✅ 使用 .env.example 作为模板文件
- ✅ 在 .gitignore 中添加 .env.keys
- 生产环境使用云服务的密钥管理
- 本地开发使用 .env.keys 文件
- 定期轮换加密密钥
与传统 dotenv 的对比
Section titled “与传统 dotenv 的对比”| 特性 | dotenv | dotenvx |
|---|---|---|
| 基础功能 | ✅ | ✅ |
| 加密支持 | ❌ | ✅ |
| 多环境 | 有限 | ✅ |
| 跨平台 | Node.js | 全平台 |
| 变量扩展 | 需插件 | 内置 |
| 命令替换 | ❌ | ✅ |
Dotenvx 是现代应用程序环境变量管理的最佳选择,特别适合:
- 需要高安全性的生产环境
- 多环境部署的复杂项目
- 团队协作的大型项目
- 有合规要求的企业应用