.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 中,即使是一个开源项目。

8511 次点击
所在节点    程序员
55 条回复
littleylv
2020-04-10 16:10:47 +08:00
不应该传.env
要传.env.example
然后 example 里注意不要写正式的,用通用字符代替,比如
password=YOUR_PASSWORD (而不是 123abc )
FaiChou
2020-04-10 16:11:58 +08:00
@tabris17 #18 嗯,后端的就涉及 private_key 了,相对来说,前端用的都是些 public_key 。所以前端 public_key 也无所谓被 public 出去。
momocraft
2020-04-10 16:13:51 +08:00
想做就做吧 我看别人花时间说服你也挺累的
自己的东西自己负责而已
FaiChou
2020-04-10 16:16:14 +08:00
@momocraft #23 当然不可能这么做 ^_^,也不需要被说服。 想了解下前端 .env 放 ignore 中的其他理由。
offline
2020-04-10 16:22:06 +08:00
.env.example 放注释

.env.default 放默认,这个应
offline
2020-04-10 16:23:28 +08:00
.env.example 放实例

下面两个都应该忽略
.env.default 放默认,这个应该在自己的服务器上生成,不提交 git
.env 放本地私有
hfpp2012
2020-04-10 16:27:41 +08:00
肯定不放 git 中呀
kasper4649
2020-04-10 16:30:24 +08:00
[x] .env
[✓] .env.example
ben1024
2020-04-10 16:32:38 +08:00
不放 .env, 进行线上编译才是正确
BenX
2020-04-10 16:45:07 +08:00
最佳实践来看,可以放一个样板同步上到 repo,例如 .env.example
同步还要在 readme 中描述解释清楚里面需要有哪些变量。

自己本地的 .env 就不要放到 repo


PS,遇到过啃爹的一个项目就是 .env 没放,readme 也不说和写有哪些变量。
要跑起来要不能抓到人,要不就只有自己看代码找去了
jun0205
2020-04-10 16:50:43 +08:00
.env.example 需要
redam
2020-04-10 16:53:42 +08:00
前端可以有.env.local,local 的就 ignore
polun
2020-04-10 17:17:53 +08:00
如果放 git 里,就不需要 .env 了,直接静态变量不更好吗。
ratatata
2020-04-10 17:46:34 +08:00
.env 不能放,但是应该放一个 .env.example,列出需要配置的变量
MeteorCat
2020-04-10 18:58:06 +08:00
example.env ,之后忽略文件.env
Chingim
2020-04-10 19:09:45 +08:00
不要教条主义,含敏感信息的就不要放,不含的无所谓,含有构建项目需要的信息(比如各种环境下的 API 地址)那就必须放到项目里
Chingim
2020-04-10 19:11:14 +08:00
因为不同的项目从 env 文件中读取的信息都不一样,何必纠结。
Kobayashi
2020-04-10 19:38:38 +08:00
不放。会放一个模板 .env.example
msg7086
2020-04-10 19:51:37 +08:00
.env 从名字上来说就是对每个环境的分别配置。
既然是对每个环境有效,当然不应该放在「对所有环境有效」的 Git 中。
这和前端后端没有关系,这是.env 本身的身份决定的。
是否 Public 和是否包含.env 没有直接关系。你源代码都是 Public 的,为什么变量不放在源码的配置文件里?
RRRSSS
2020-04-10 20:05:56 +08:00
一般开源项目里都这么干:

.env.simple 文件放 git,然后里面用变量表示,比如:

DB_PASSWORD = ${your_password}

然后 .env 加入 .gitignore

最后 README 里加上,要用户 `cp .env.simple .env`,这样可以控制每个人是不同的配置,简单明了。

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

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

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

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

© 2021 V2EX