#dotenv #env #environment #multiple #variables #merges #set

bin+lib denver

合并多个 .env 文件的 dotenv 替代品

5 个不稳定版本

0.3.1 2021 年 11 月 29 日
0.3.0 2021 年 9 月 6 日
0.2.1 2021 年 3 月 7 日
0.2.0 2021 年 1 月 10 日
0.1.0 2020 年 12 月 29 日

#842 in 配置

自定义许可证

15KB
394

DENVER

A dotenv 替代品

动机

假设你在做一个 web 应用程序。你可能有本地开发数据库,一个或多个 dev/staging/prod 数据库,几组 API 密钥等。如果你像我一样,你会使用 dotenvdotenvdotenv 来处理你的本地配置。如果你像我一样,你可能会厌倦每次切换环境时手动编辑你的 .env 文件。《code>denver 是一个小工具,让你不必这样做。

用法

将你希望在所有环境中共享或默认的任何内容放入你的正常 .env 文件中。将你的环境特定内容放入 .$ENV_NAME.env 文件中,例如 .dev.env.staging.env 等。使用 denver "$APP" -$ENV_NAME 运行你的应用程序,例如 denver "venv/bin/python flask run" -denver 会合并你的环境变量,并覆盖“较旧的”变量。默认情况下(但请参阅以下内容),.env 被视为“最旧的”变量集,所以如果你在 .env.dev.env 中定义了例如 DATABASE_URL 并传递 -,将使用 .dev.env 中的值。

环境文件名不区分大小写,因此 denver -e DEV-e dev 具有相同的效果。

高级

您可以通过多次传递 -e $WHATEVER 来合并多个 .env 文件;"较旧" 的规则按照顺序应用,所以 -e staging -e dev 的结果是,任何在 .env 中同时存在于 .staging.env 的内容都会被覆盖,任何在 .staging.env 中同时存在于 .dev.env 的内容也会被覆盖。

您可以通过传递 -l/--merge-left 来反转这个顺序。

您可以通过传递 -s KEY=VALUE(或 --set KEY=VALUE)来临时设置单个值。您可以通过多次传递 -s 来实现。

您可以通过传递 -KEY=ENV_NAME(或 --from KEY=ENV_NAME)来从其他环境文件中临时设置单个值。这与 - 的方式相同,但 合并指定的变量。如果提供的环境文件中没有名为 KEY 的变量设置,则不执行任何操作。

待办事项

  • 添加 --no-clobber 等。

依赖

~2.3–9.5MB
~82K SLoC