简单来说,在go.mod中使用replace,可以将依赖库替换为本地目录,就像下面这样:
1 | replace github.com/q191201771/naza => /Volumes/Data/chef_git/naza |
其中github.com/q191201771/naza
是依赖的module的github repo url,/Volumes/Data/chef_git/naza
是本地目录。
举个栗子。
我有一个开源的Go流媒体服务器项目lal,依赖另一个提供底层基础通用功能的项目naza。
- github.com/q191201771/lal
- github.com/q191201771/naza
两个项目都是我自己在维护。使用go mod管理代码。
lal的go.mod是这样:
1 | module github.com/q191201771/lal |
开发lal时,有时需要改naza的代码,比如在naza中新增功能或修复bug。
常规操作,是每次修改完naza代码,都提交到github,lal才能看到naza的变化。
如果不想这样,可以使用go mod replace功能,将lal中依赖的naza指向本地目录。做法是在lal的go.mod尾部增加一行replace信息:
1 | replace github.com/q191201771/naza => /Volumes/Data/chef_git/naza |
之后,lal不再依赖的naza的固定版本,而是依赖所指向的本地目录中的naza代码。换句话说,就可以愉快的一边修改naza,一边在lal中看效果,等到naza的本次修改稳定符合预期后,再提交naza到github。
本文完,作者yoko,尊重劳动人民成果,转载请注明原文出处: https://pengrl.com/p/20054/