使用go mod replace对依赖的package做可见性修改
2010 年 8 月 3 日
简单来说,在go.mod中使用replace,可以将依赖库替换为本地目录,就像下面这样:
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是这样:
module github.com/q191201771/lal go 1.12 require github.com/q191201771/naza v0.12.2
开发lal时,有时需要改naza的代码,比如在naza中新增功能或修复bug。
常规操作,是每次修改完naza代码,都提交到github,lal才能看到naza的变化。
如果不想这样,可以使用go mod replace功能,将lal中依赖的naza指向本地目录。做法是在lal的go.mod尾部增加一行replace信息:
replace github.com/q191201771/naza => /Volumes/Data/chef_git/naza
之后,lal不再依赖的naza的固定版本,而是依赖所指向的本地目录中的naza代码。换句话说,就可以愉快的一边修改naza,一边在lal中看效果,等到naza的本次修改稳定符合预期后,再提交naza到github。
本文完,作者 yoko
,尊重劳动人民成果,转载请注明原文出处: https://pengrl.com/p/20054/