【问题标题】:What is the best approch to handle env file?处理 env 文件的最佳方法是什么?
【发布时间】:2018-12-03 17:51:42
【问题描述】:
我的项目根目录中有.env 文件。
我应该如何处理 dev、qa、stage 和 prod 的 .env 文件?
- 应该将它们包含在 git repo 中吗?如果不是我把它们放在哪里?例如,外部驱动器上的不同文件夹?
- 什么是正确的扩展名?
.env.qa 或 .qa.env?
- 如果我想使用
webpack 将我的包构建到 dist 文件夹(服务器端),我应该包含 env 文件还是手动将其复制到 dist 文件夹?
【问题讨论】:
标签:
node.js
webpack
environment-variables
【解决方案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')
})
]
【解决方案2】:
配置模块是解决不同环境特定值的简单方法。在 -https://www.npmjs.com/package/config 阅读有关配置模块的信息。您将在存储库中有一个配置文件夹,其中包含特定于环境的文件,我喜欢这种方法,因为文件在存储库中但很好地分开。这提供了一种非常简单的方法来设置默认值,覆盖环境特定值等。它是通过设置适当的节点环境变量(export NODE_ENV=development oracceptance or production)来使用不同环境的特定文件也非常方便。