Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 我是否必须将.env文件添加到react项目的版本控制中?_Reactjs_Version Control_Environment Variables - Fatal编程技术网

Reactjs 我是否必须将.env文件添加到react项目的版本控制中?

Reactjs 我是否必须将.env文件添加到react项目的版本控制中?,reactjs,version-control,environment-variables,Reactjs,Version Control,Environment Variables,我看到一些中型博客和StackOverflow答案,我不应该将.env文件添加到版本控制中 我完全理解为什么需要这样做 但是在处理一个项目时呢 Reactjs是用于前端的,所有环境变量都是公共的,即使是捆绑生产的,任何人都可以使用web浏览器阅读 我有两个环境文件,.env.production用于生产,而.env.staging用于暂存。构建时,环境变量值将被放入绑定版本。所有其他团队成员的这些文件都是相同的 事实上,这些文件中根本没有秘密 问题是: 我应该将这两个文件添加到版本控制中,还是必

我看到一些中型博客和StackOverflow答案,我不应该将
.env
文件添加到版本控制中

我完全理解为什么需要这样做

但是在处理一个项目时呢

Reactjs是用于前端的,所有环境变量都是公共的,即使是捆绑生产的,任何人都可以使用web浏览器阅读

我有两个环境文件,
.env.production
用于生产,而
.env.staging
用于暂存。构建时,环境变量值将被放入绑定版本。所有其他团队成员的这些文件都是相同的

事实上,这些文件中根本没有秘密

问题是:


我应该将这两个文件添加到版本控制中,还是必须手动将这些文件分发给其他团队成员?那为什么呢?

不,你没有。env文件应该以单独的方式放在服务器上。否则,任何可以访问源代码存储库的人都可以读取甚至修改.env文件。

首选的方法是创建一个名为
.env.sample
的文件,该文件将包含所有包含随机值或无值的键。任何克隆回购协议的开发人员都将了解运行/构建项目所需的环境变量

在团队内部,有一个秘密共享机制。有很多工具可以解决这个问题

克隆repo后,开发人员第一次需要运行
cp.env.sample.env
并从secretmanager复制值


确保将
.env
添加到
.gitignore
中,这样就不会有人意外地将包含机密的
.env
推送到repo中。

.env
如果您的存储库是公共的,则不应签入您的repo中。关键是它将向其他人公开(应该是什么)内部信息。但是如果您有一个私有的Git存储库,那么就没有问题了。您的项目是前端还是后端并不重要,您使用的技术也不重要。如果随机人员可以修改您的整个存储库,那么我会说您的问题比.env文件更大。首先,您的整个应用程序不再安全。如果对您的存储库进行适当的监督(不管其中有什么文件,都应该实现),那么持有.env不是问题。至少在修改方面——是的,你仍然不想公开它。