处理环境文件的最佳方法是什么?

时间:2018-06-25 07:57:30

标签: node.js webpack environment-variables

我的项目根目录中有.env个文件。

我应该如何处理开发,质量保证,阶段和产品的.env文件?

  • 应该将它们包含在git repo中吗?如果不是我放在他们那里?例如外部驱动器上的其他文件夹?
  • 正确的扩展名是什么? .env.qa还是.qa.env
  • 如果我想使用webpack将分发包构建到dist文件夹(服务器端),我应该添加env文件还是手动将其复制到dist文件夹?

2 个答案:

答案 0 :(得分:1)

您不应将env文件签入任何源代码管理中。所有这些秘密都将永久地提供给有权访问该回购协议的任何人,直到重写历史记录以将其删除为止。

例如,如果您使用AWS服务,我建议您使用Secrets Manager

任何引入Webpack的环境变量都不应该是秘密,而应该是配置值。任何可以查看源代码的人都可以读取这些值。如果需要特定于环境的配置,Webpack DefinePlugin将使用以下配置将MY_API_HOST之类的变量替换为其值:

const plugins = [
  new webpack.DefinePlugin({
    MY_API_HOST: JSON.stringify('https://my-domain.com/api/'),
    MY_API_VERSION: JSON.stringify('v2')
  })
]

答案 1 :(得分:0)

Config模块是解决不同env特定值的简便方法。在-https://www.npmjs.com/package/config上了解有关配置模块的信息。您将在存储库中拥有一个带有env特定文件的config文件夹,我喜欢这种方法,因为这些文件位于存储库中,但分隔得很好。这提供了一种非常简单的方法来设置默认值,覆盖环境特定的值等。通过设置适当的节点环境变量(export NODE_ENV =开发或接受或生产),使用不同的环境特定文件也非常方便。