.env 应不应该放到 git 中?

2020-04-10 15:27:23 +08:00
 FaiChou

Gatsby.js Link

Please note that you shouldn’t commit .env.* files to your source control and rather use options given by your Continuous Deployment (CD) provider.

在 Gatsby.js 文档中提到, .env.* 不应该提交到 git 中,但是 .env.* 里的变量不都是给项目用的吗?最终编译后可以在代码中找到对应的值,所以对用户而言,这些变量都是 public 的。

所以我觉得 .env.* 可以放到 git 中,即使是一个开源项目。

8510 次点击
所在节点    程序员
55 条回复
R18
2020-04-10 15:32:44 +08:00
.env 是一个配置文件,里面可能会有用户的私人配置,密钥之类的东西。通俗做法是 写一个 env 文件来进行通用配置,用户 copy 后自由发挥
Vegetable
2020-04-10 15:33:12 +08:00
说两个我想到的点

我曾经因为一个 react-native 项目的.env 文件包含了别人的 JavaHome 还是 AndroidHome 变量,耽误了不少时间.
有一些密码会通过环境变量保存, 上传到仓库并不安全
FaiChou
2020-04-10 15:40:17 +08:00
@Vegetable #2 「有一些密码会通过环境变量保存, 上传到仓库并不安全」.env 本身就不应该放密码等信息,所以两码事。
FaiChou
2020-04-10 15:41:28 +08:00
@Vegetable #2 我明白你的意思了,有些小白用户会错误的将密码放到 .env 来管理,所以还是建议大家 .env 不要托管到 git 中。是吧
tabris17
2020-04-10 15:42:14 +08:00
你想和大家分享你的密码?
jarontai
2020-04-10 15:44:45 +08:00
.env 文件本身肯定不入 git 啊,入 git 的应该是一个模版比如:.env.example,其中添加配置示例和注释,给用户拷贝然后进行配置
FaiChou
2020-04-10 15:46:11 +08:00
@tabris17 #5 有什么密码需要放到 .env 中?放到 .env 中就代表你要用这个变量,最终 webpack 打包工具会将 .env 中的值赋给项目代码引用的地方,对前端来说,代码是 public 的,任何人都可以看到「密码」。
int64ago
2020-04-10 15:46:53 +08:00
int64ago
2020-04-10 15:47:29 +08:00
不要说我什么不打码……这些人既然公开了这些就不值得同情
koolob
2020-04-10 15:48:21 +08:00
实际用到的.env 不要传,可以传的是.env 文件的模版。
另外可以加一个脚本,通过参数来生成.env 文件。

其实这是 git 上到底应该放什么不放什么的问题。
我觉得凡是跟运行环境有关的个性化的东西,就都不要传 git 。比如本地目录路径、本地测试用的账号密码什么的。
Raincal
2020-04-10 15:48:36 +08:00
有些变量只在构建阶段会用到,并不能在构建后的代码中看到
skys215
2020-04-10 15:50:56 +08:00
知道为什么叫.env 吗? env 就是 environment 的缩写,就是说,这个文件里的值是只针对当前环境的,因此.env 不应该跟着传上去。如果想统一管理配置,那有对应的软件可以支持。好像叫 zookeeper 什么的。
b821025551b
2020-04-10 15:50:56 +08:00
你的眼光不应该只局限于前端范围,后端也同样要用到.env 之类的,里面是放了各种服务的 key
FaiChou
2020-04-10 15:53:12 +08:00
@int64ago #8 我觉得这位用户的项目开源出来就是个错误。。发现刚刚开源的 ~ 正如 4L 提到的,小白用户错误的将 .env 中贴了密码等信息。即使不放 .env 中,程序中也能找到,再不济抓个包也能看到吧。
ngrok111
2020-04-10 15:53:14 +08:00
影响不大的可以写入
env_example
FaiChou
2020-04-10 15:54:33 +08:00
@b821025551b #13 哦哦,谢谢提醒,我没有接触过后端。我 append 下前提概要。
iyear
2020-04-10 15:57:04 +08:00
gitignore 加*.env ,自己的配置就用这个后缀
再新建一个配置模板文件.env.example
README 让用户下载模板自己改
tabris17
2020-04-10 16:01:41 +08:00
@FaiChou 很难跟前端解释这个问题
dtsdao
2020-04-10 16:04:40 +08:00
前端的 .env 可以放后端地址啊,你不可能直接拿生产服务器测试吧?这个东西配置的时候在开发文档里说明一下就是了
FaiChou
2020-04-10 16:08:54 +08:00
@dtsdao #19 开源项目,没有什么生产 /测试服务器地址吧。 平时的业务项目,.env 放 git 里,也没毛病吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/661188

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX