为啥不应该签入 dotenv 文件?

Posted

技术标签:

【中文标题】为啥不应该签入 dotenv 文件?【英文标题】:Why dotenv files should not be checked in?为什么不应该签入 dotenv 文件? 【发布时间】:2017-06-20 06:04:14 【问题描述】:

我是 nodejs 的新手,如果我的问题太琐碎,请原谅我。 我正在使用 dotenv 创建一个 enviornment 文件。

但是,在他们的WebSite 中,他们建议不要签入 .env 文件。 所以,我想知道如果这个文件没有被签入,我将如何告诉其他开发人员应用程序需要的 environment 变量。他们需要填写环境变量的 values,因为它可以在 js(服务器、配置)文件中的所有位置使用。 查看每个使用 env 变量并替换的文件不是一件容易的事吗?除非我完全错过了一些东西。

非常感谢任何帮助。

【问题讨论】:

这就是 readme.md 文件的用途......说明 @JaromandaX 谢谢。好的,所以对于生产,必须查看 readme.md 文件,并将文件中任何地方的所有环境变量替换为生产值。 (因为 dotenv 仅用于开发目的)? @ZammyPage 没有;环境变量的全部目的是不必在整个代码中替换任何内容。您要么添加一个.env 文件(由dotenv 读取),要么直接在系统中设置环境变量。 @JaromandaX README 文件可以很好地记录环境变量,但是拥有一个示例文件可以让每个人的生活更轻松。 是的,但你会在...中描述它的用途。哦,自述文件:p 【参考方案1】:

环境变量通常用于特定于环境的配置值,例如数据库凭据、API 端点等。由于它们是特定于环境的,并且通常包含数据库凭据等敏感数据,因此不应提交 .env 文件。

如果要显示使用了哪些环境变量,一种方法是创建并提交示例文件:

.env.sample

DB_HOST=localhost
DB_USERNAME=
DB_PASSWORD=
DB_DATABASE=our_project

然后由其他开发人员复制相同的内容并创建他们自己的.env 文件(或者只是在他们的系统上填充相关的环境变量)。

【讨论】:

我只是想了解这是否是标准方法?我知道我能做到吗?但这真的是标准方法吗? @ZammyPage 是的,这是一种标准方法。你标记了 Laravel,它开箱即用地做同样的事情:In a fresh Laravel installation, the root directory of your application will contain a .env.example file.laravel.com/docs/5.4/configuration#environment-configuration 通过这个问题,我得到了什么,我们没有将 .env 文件提交给版本控制,但在生产环境中,我们需要这个 .env 文件,并且由于它的敏感性,我们必须创建自己的文件@ ZammyPage ?

以上是关于为啥不应该签入 dotenv 文件?的主要内容,如果未能解决你的问题,请参考以下文章

vs2010 tfs个别文件为啥没有签入签出了

dotenv 在生产中需要 .env 文件

为啥 vcxproj.filters 文件存在?

应将哪些 Visual Studio 2013 项目文件签入源代码管理?

如何为 dotenv 获取特定于环境的 .env 文件(在 Laravel 5 中)

如何在 Node.js 中设置 dotenv 文件?