使用go mod replace对依赖的package做可见性修改

简单来说,在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
2
3
4
5
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信息:

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/

0%