在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
因为某些未知原因,并不是所有的包都能直接用go get获取到,这时我们就需要使用go modules的replace功能了。(当然大部分问题挂个 梯@@子 就能解决,但是我们也可以有其它选项)
使用replace替换packagereplace顾名思义,就是用新的package去替换另一个package,他们可以是不同的package,也可以是同一个package的不同版本。看一下基本的语法: go mod edit -replace=old[@v]=new[@v] old是要被替换的package,new就是用于替换的package。 这里有几点要注意:
基于以上原因,我们替换一个package的步骤应该是这样的:
下面我们仍然用chromedp的example做一个示例。
示例chromedp使用了golang.org/x/image,这个package一般直连是获取不了的,但是它有一个github.com/golang/image的镜像,所以我们要用replace来用镜像替换它。 我们先来看看如果不replace的情况下的依赖情况: 没错,我们使用了原来的包,当然如果你无法获取到它的话是不会被记录进来的。 下面我们go get它的镜像: # master表示获取最新的commit 然后我们查看版本号: cat go.mod 有了版本号,我们就能replace了: go mod edit -replace=golang.org/x/[email protected]=github.com/golang/[email protected] 现在我们查看一下go.mod: replace信息已经更新了,现在我们只要go mod tidy或者go build,我们的代码就可以使用new-package了。 更新后的go.sum,依赖已经替换成了镜像: 目前来看,replace做的远不如go get那样方便人性化,不过毕竟还只是测试阶段的功能,期待一下它在go1.12的表现吧。
使用replace替换packagereplace顾名思义,就是用新的package去替换另一个package,他们可以是不同的package,也可以是同一个package的不同版本。看一下基本的语法: go mod edit -replace=old[@v]=new[@v] old是要被替换的package,new就是用于替换的package。 这里有几点要注意:
基于以上原因,我们替换一个package的步骤应该是这样的:
下面我们仍然用chromedp的example做一个示例。
示例chromedp使用了golang.org/x/image,这个package一般直连是获取不了的,但是它有一个github.com/golang/image的镜像,所以我们要用replace来用镜像替换它。 我们先来看看如果不replace的情况下的依赖情况: 没错,我们使用了原来的包,当然如果你无法获取到它的话是不会被记录进来的。 下面我们go get它的镜像: # master表示获取最新的commit 然后我们查看版本号: cat go.mod 有了版本号,我们就能replace了: go mod edit -replace=golang.org/x/[email protected]=github.com/golang/[email protected] 现在我们查看一下go.mod: replace信息已经更新了,现在我们只要go mod tidy或者go build,我们的代码就可以使用new-package了。 更新后的go.sum,依赖已经替换成了镜像: 目前来看,replace做的远不如go get那样方便人性化,不过毕竟还只是测试阶段的功能,期待一下它在go1.12的表现吧。
|
请发表评论