我试图了解在单一存储库中处理环境变量的最佳方法是什么。我正在使用turborepo,项目结构被组织成 /apps 和 /packages 目录等。
项目的当前状态是应用程序/包范围内的 .env 和 .env.local 文件。包含真正秘密的文件是 .env.local,它仅保存在本地并在开发人员之间共享,而 .env 实际上是在存储库中提交的。
这个想法是只保留根级别 .env,正如 Turbo repo 和 dotenv-cli 库所建议的那样,并简化设置,但我想有更多关于我应该考虑哪些事情的想法和参考。
我自己提出的一些问题是:
感谢您的宝贵时间。
致以诚挚的问候,
我已将所有包/应用程序范围的环境变量移至根级别 .env 和 .env.local 文件中,但我想获得一些反馈以便更好地做出决定。
我可以分享我目前工作的地方使用的工具以及我认为最有效的工具:
direnv
很棒,因为它挂接到您的 shell 中并且可以依赖于路径,允许您根据您的路径选择不同的 .envrc 文件[1]~/.netrc
文件中,因为像 requests.py 这样的工具会自动使用它 [2] 或在可以源/符号链接的主目录中的文件中。类似于 ~/.kube/config
文件的功能 [3]将秘密内容完全保留在存储库之外的主要原因是减少意外提交它们的机会。
[2] https://www.gnu.org/software/inetutils/manual/html_node/The-_002enetrc-file.html
[3] https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/