dotenv/dotenvxdotenvx 是由 dotenv 创建者开发的安全环境变量管理工具,提供跨平台运行能力、多环境配置支持和环境变量加密功能。它解决了传统环境变量管理中的安全性和灵活性问题,可无缝集成到各种编程语言、框架和部署流程中。
.env 文件(如 .env、.env.production)轻松切换开发、测试、生产等环境。bashnpm install @dotenvx/dotenvx --save
bashcurl -sfS [***] | sh dotenvx help
bashbrew install dotenvx/brew/dotenvx dotenvx help
bashdocker run -it --rm -v $(pwd):/app dotenv/dotenvx help
bashcurl -L -o dotenvx.tar.gz "[***] -s)-$(uname -m).tar.gz" tar -xzf dotenvx.tar.gz ./dotenvx help
bashwinget install dotenvx dotenvx help
创建 .env 文件:
bashecho "HELLO=World" > .env
创建示例脚本(以 Node.js 为例):
js// index.js console.log(`Hello ${process.env.HELLO}`);
不使用 dotenvx 运行(环境变量未加载):
bashnode index.js # 输出: Hello undefined
使用 dotenvx 运行(环境变量已加载):
bashdotenvx run -- node index.js # 输出: Hello World
通过 -f 参数指定环境文件,实现多环境切换:
bash# 创建生产环境文件 echo "HELLO=Production" > .env.production # 加载生产环境变量运行 dotenvx run -f .env.production -- node index.js # 输出: [dotenvx@1.X.X] injecting env (1) from .env.production # Hello Production
bashecho "HELLO=local" > .env.local echo "HELLO=World" > .env # 按顺序加载多个文件,前面文件的变量优先 dotenvx run -f .env.local -f .env -- node index.js # 输出: Hello local
bash# 后面文件的变量覆盖前面文件 dotenvx run -f .env.local -f .env --overload -- node index.js # 输出: Hello World
支持 Next.js 或 dotenv-flow 的环境加载约定:
bash# 按 Next.js 约定加载环境文件 dotenvx run --convention=nextjs -- node index.js
使用 dotenvx encrypt 命令加密环境文件,保护敏感信息:
创建并加密环境文件:
bashecho "HELLO=Secret" > .env dotenvx encrypt # 生成加密的 .env 文件和密钥对
运行时自动解密:
bashdotenvx run -- node index.js # 输出: Hello Secret
bash# 加密生产环境文件 dotenvx encrypt -f .env.production # 使用生产环境私钥运行 DOTENV_PRIVATE_KEY_PRODUCTION="<私钥>" dotenvx run -- node index.js
bash# 为多个环境文件设置私钥 DOTENV_PRIVATE_KEY="<.env私钥>" DOTENV_PRIVATE_KEY_PRODUCTION="<.env.production私钥>" dotenvx run -- node index.js
ini# .env USERNAME="admin" DATABASE_URL="postgres://${USERNAME}@localhost/mydb"
bashdotenvx run -- node -e "console.log(process.env.DATABASE_URL)" # 输出: postgres://admin@localhost/mydb
ini# .env NODE_ENV=production DB_HOST=${DB_HOST:-localhost} # 未设置则使用默认值 DEBUG=${NODE_ENV:+false} # 设置则使用备选值
ini# .env CURRENT_USER="$(whoami)" # 嵌入命令输出
bashdotenvx run -- node -e "console.log(process.env.CURRENT_USER)" # 输出: 当前系统用户名
bash# TypeScript 示例 npm install tsx --save-dev echo "HELLO=World" > .env echo 'console.log(`Hello ${process.env.HELLO}`)' > index.ts dotenvx run -- npx tsx index.ts # 输出: Hello World
bashecho "HELLO=World" > .env echo 'import os; print(f"Hello {os.getenv("HELLO")}")' > index.py dotenvx run -- python3 index.py # 输出: Hello World
bashecho "HELLO=World" > .env echo 'public class Main { public static void main(String[] args) { System.out.println("Hello " + System.getenv("HELLO")); } }' > Main.java javac Main.java dotenvx run -- java Main # 输出: Hello World
bash# Next.js dotenvx run -- next dev # Ruby on Rails dotenvx run -- bin/rails s
bashdocker run -it --rm -v $(pwd):/app dotenv/dotenvx run -- node index.js
dockerfileFROM node:latest WORKDIR /app COPY . . RUN curl -fsS [***] | sh RUN npm install CMD ["dotenvx", "run", "--", "node", "index.js"]
构建并运行:
bashdocker build -t my-app . docker run -it --rm my-app
deno run 使用 npm 模块,推荐安装二进制 CLI。--overload 可让后续文件覆盖。更多详细文档请访问 dotenvx 官方文档。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务