Javascript 使用多个.env文件是错误的做法吗?
我需要在不同的环境中运行测试:Javascript 使用多个.env文件是错误的做法吗?,javascript,node.js,security,environment-variables,password-protection,Javascript,Node.js,Security,Environment Variables,Password Protection,我需要在不同的环境中运行测试:DEV,STAGING,PRODUCTION。 不用说,上述环境的环境变量/秘密显然是不同的 我的快速解决方案是为每个环境创建一个env文件,比如dev.env,staging.env&prod.env 但根据流行的dotEnv npm软件包和12因子应用程序的文档,不建议在您的repo中包含多个.env文件 请给我一个针对多种环境管理环境变量的实用解决方案 如果我正确理解他们在这里写的内容: 我应该有多个.env文件吗? 不可以。我们强烈建议不要使用“mai
DEV
,STAGING
,PRODUCTION
。
不用说,上述环境的环境变量/秘密显然是不同的
我的快速解决方案是为每个环境创建一个env文件,比如dev.env
,staging.env
&prod.env
但根据流行的dotEnv npm软件包和12因子应用程序的文档,不建议在您的repo中包含多个.env
文件
请给我一个针对多种环境管理环境变量的实用解决方案
- 如果我正确理解他们在这里写的内容:
我应该有多个.env文件吗?
不可以。我们强烈建议不要使用“main.env”文件和类似.env.test的“environment.env”文件。您的配置应该在部署之间有所不同,并且不应该在环境之间共享值
这并不意味着您不应该有多个env文件,而是不应该有一个包含所有默认配置的
main.env
文件和从main.env
继承并覆盖某些值的附加env文件(每个环境一个)
不建议使用的原因是,使用这种配置很难理解“特定值来自何处?”(来自以下哪一个:主环境文件、特定环境文件、环境变量、代码默认值等)
这就是说,如果您创建多个env文件而没有这样的“main”,这意味着您需要在不同的env文件上复制许多值,这是因为清晰性更好,但也有重复/冗长的缺点
在我看来,配置并不是一件小事,虽然您只有一个小项目,但选择如何实施并不重要,但如果我们谈论的是更关键的东西,比如公司的产品,那么有很多解决方案可用,有些是开源的,免费的,有些是成本钱,但是,值得进行研究,找出哪一项对您的用例更有意义
在我看来,在项目中最好有多个.env 例如,在Symfony中,我们可以为我们的项目配置多个环境,例如:local、dev、prod。它的目的是使代码更清晰易读
我不确定是否有过多的技术,但您可以在这篇Symfony文章中读一点关于.env的内容(不必成为Symfony的破坏者):在您的回购协议中?但是
.env
文件包含API密钥和加密哈希等秘密,它们不应该提交,也不应该是您的repo的一部分。.env
文件的全部要点是每台机器有一个,因此您可以根据机器/环境精确地在其中包含内容:dev、staging、production。还是我遗漏了什么?@JeremyThille一个人不应该把秘密放在.env
文件中,假设它们在repo中被检查过。机密应通过专用机制单独安全地处理!现在,不将env文件签入repo会产生一个不同的问题:我们把它放在哪里?我们如何备份它?我们如何跟踪变化?