为啥不应该签入 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 文件?的主要内容,如果未能解决你的问题,请参考以下文章
应将哪些 Visual Studio 2013 项目文件签入源代码管理?