目前,我正在开发一个API,它使用无服务器框架和Go。
我正在使用Serverless-offline插件进行本地测试。
这个API依赖于其他几个存储库(我也维护它们),我使用go.mod
文件导入这些存储库。
然而,我很难完善我的开发人员工作流程。
目前,如果我想在此API所依赖的存储库中进行更改,我必须更改项目go.mod
以包含用于测试的替换指令,但随后我必须手动将其更改回以部署到生产环境。
基本上我正在寻找一种方法来包含替换指令,它只在本地开发期间应用。其他人是如何处理这个问题的?
附加问题:有没有办法在docker中离线运行Serverless?我发现在裸机上运行无服务器离线会导致不同开发环境之间的不一致。
2条答案
按热度按时间aurhwmvo1#
您可以使用带有
-modfile
选项的备用go.mod
文件运行go
命令:从生成命令:
-modfile=file.mod
标志指示go命令读取(并可能写入)模块根目录中的替代文件,而不是go.mod
。文件名必须以.mod
结尾。名为go.mod
的文件必须仍然存在,以确定模块根目录,但它不会被访问。指定-modfile
时,还将使用备用go.sum
文件:其路径是通过修剪.mod扩展名并附加. sum从-modfile
标志导出的。使用必要的
replace
指令创建local.go.mod
文件,以进行开发和构建,例如:字符串
oug3syen2#
在Go 1.18或更高版本中,最简单的方法是使用新的Go workspaces功能。请参阅
实际上,使用
go work init
创建一个go.work
文件,该文件可以包含go.mod
范围之外的本地替换指令。