环境配置 (Nex.Env)
Nex 提供了一个简单而强大的环境配置系统,它不仅能自动加载环境变量,还能在开发环境中智能定位项目根目录。
1. 核心特性
-
自动加载:项目启动时自动搜索并加载根目录下的
.env文件。 -
多环境支持:支持
.env,.env.local,.env.dev等多种后缀(加载顺序:.env最先,后续文件覆盖前者)。 -
智能根目录探测:利用
Nex.Env.root_path/0自动处理开发环境(如_build目录)与源代码目录的路径差异。
2. 使用方法
你可以通过 Nex.Env.get/2 安全地获取配置。
示例
在 .env 中定义:
STRIPE_API_KEY=sk_test_12345
MAX_RETRY=5
在代码中读取:
# 获取字符串配置
api_key = Nex.Env.get("STRIPE_API_KEY")
# 提供默认值
retry_count = Nex.Env.get("MAX_RETRY", "3") |> String.to_integer()
3. 智能根目录探测
由于 Elixir 编译后的文件通常位于 _build 目录下,直接使用 File.cwd! 有时无法正确找到项目根目录。Nex 使用了递归探测算法:
- 从当前工作目录开始向上查找。
-
寻找包含
mix.exs或.env的文件夹。 - 确保开发者在任何位置启动项目(或运行测试)都能正确加载配置文件。
4. 最佳实践
-
不要将
.env提交到 Git:你应该在.gitignore中忽略.env,并提供一个.env.example模板。 -
类型转换:环境变量始终以字符串形式存储,读取后请根据需要使用
String.to_integer/1等函数转换。 - 生产环境:在 Docker 或云平台上,建议直接设置操作系统级环境变量,Nex 会优先读取它们。