如何使用替代的go.mod文件进行本地开发?

tag5nh1u  于 2023-08-01  发布在  Go
关注(0)|答案(2)|浏览(134)

目前,我正在开发一个API,它使用无服务器框架和Go。
我正在使用Serverless-offline插件进行本地测试。
这个API依赖于其他几个存储库(我也维护它们),我使用go.mod文件导入这些存储库。
然而,我很难完善我的开发人员工作流程。
目前,如果我想在此API所依赖的存储库中进行更改,我必须更改项目go.mod以包含用于测试的替换指令,但随后我必须手动将其更改回以部署到生产环境。
基本上我正在寻找一种方法来包含替换指令,它只在本地开发期间应用。其他人是如何处理这个问题的?
附加问题:有没有办法在docker中离线运行Serverless?我发现在裸机上运行无服务器离线会导致不同开发环境之间的不一致。

aurhwmvo

aurhwmvo1#

您可以使用带有-modfile选项的备用go.mod文件运行go命令:
从生成命令:
-modfile=file.mod标志指示go命令读取(并可能写入)模块根目录中的替代文件,而不是go.mod。文件名必须以.mod结尾。名为go.mod的文件必须仍然存在,以确定模块根目录,但它不会被访问。指定-modfile时,还将使用备用go.sum文件:其路径是通过修剪.mod扩展名并附加. sum从-modfile标志导出的。
使用必要的replace指令创建local.go.mod文件,以进行开发和构建,例如:

go build -modfile=local.go.mod ./...

字符串

oug3syen

oug3syen2#

在Go 1.18或更高版本中,最简单的方法是使用新的Go workspaces功能。请参阅

实际上,使用go work init创建一个go.work文件,该文件可以包含go.mod范围之外的本地替换指令。

相关问题