【问题标题】:Should I use go modules in production [closed]我应该在生产中使用 go 模块吗[关闭]
【发布时间】:2019-06-21 17:51:58
【问题描述】:

我正在使用 dep,但我被 Go 1.11 中内置的 Go Modules 所吸引

在文档中,它说:

Go 1.11 包括对此处提议的版本化模块的初步支持。模块是 Go 1.11 中的一个实验性选择加入功能,计划结合反馈并最终确定 Go 1.13 的功能。尽管某些细节可能会发生变化,但未来的版本将支持使用 Go 1.11 或 1.12 定义的模块。

尽管如此,Go Modules 似乎被社区广泛使用,并且运行良好。

那么,对于一个新项目,我应该使用 Go Modules,还是应该坚持使用 dep ?我需要帮助才能做出决定。

【问题讨论】:

  • 你应该做什么或不应该做什么是见仁见智的问题。任何此类决定都有利有弊。我们无法告诉你该怎么做。
  • IMO 你应该在开始一个新项目时切换到模块。 Go 1.13 将于 8 月发布(约 2 个月后),全面支持模块,包括 Go 模块镜像和校验和数据库的默认使用。也别忘了:如果你从dep开始,将来你总是可以选择切换到模块……这不像你现在选择的那样,你将不得不终生携带。
  • @icza 好的,2 个月的争论很好。你可以把它作为一个答案
  • 不确定您所说的“生产中”是什么意思。模块对运行程序没有影响,只会对构建程序产生影响,这不应该在“生产”中发生。生产环境应该是您运行已构建应用程序的地方。
  • VS Code 等工具和编辑器仍然存在一些问题。然而,这些模块被广泛接受。

标签: go go-modules godeps


【解决方案1】:

在我看来,你应该在开始一个新项目时切换到模块。 Go 1.13 将于 8 月发布(约 2 个月后),全面支持模块,包括默认使用 Go 模块镜像和校验和数据库。

引用preliminary Go 1.13 release docs:

Go 1.13 预计将于 2019 年 8 月发布。

从 Go 1.13 开始,go 命令默认使用 Go 模块镜像和 Google 运行的 Go 校验和数据库下载和验证模块。有关这些服务的隐私信息,请参阅 https://proxy.golang.org/privacy,有关配置详细信息,包括如何禁用这些服务器或使用不同的服务器,请参阅 go command documentation

我看到越来越多的存储库添加了go.mod 文件,这意味着它们已经过测试并且可以毫无问题地使用模块,即使它们没有go.mod 文件,这并不意味着它们可以' 不与模块一起使用,但可能需要手动调整依赖项或供应商

也不要忘记:即使您现在不开始在新项目中使用模块,您也可以在未来随时切换到模块,没有人阻止。但是,如果您从第一天开始学习模块,您就会为自己节省一些工作。

【讨论】: