Go Module的常用场景操作命令

125 阅读2分钟

1、为当前项目添加依赖包

我们在下面代码中,引入了第三包的一个uuid的功能。

如下代码所示:

package main

import (
   "github.com/google/uuid"
   "github.com/sirupsen/logrus"
)

func main() {
   logrus.Println(uuid.NewString())
}

要正常使用uuid.NewString()的功能,首先要下载第三包,使用如下命令下载:

go get github.com/sirupsen/logrus

也可以使用go mod tidy去自动分析下载相关依赖的包

2、降级依赖的版本

我们使用上面的命令,下载的第三方依赖版本可能都是最新的

但是最新的版本有时候可能与我们的程序并不兼容

因此我们需要对该第三方版本进行降级

我们要进行降版本,就得知道降到哪一版本,要想知道降到哪一版本,就得知道都有哪些版本。

已logrus为例,使用以下命令查看都有哪些版本。

go list -m -versions github.com/sirupsen/logrus

image.png

看一下当前我们使用的版本:

查看go.mod文件:

image.png

是1.9.0版本,我们把他降到1.8.1版本。

go get github.com/sirupsen/logrus@v1.8.1

image.png

再去看看go.mod里面变了没

image.png

下载完毕之后也变了

也可以使用go mod命令来实现降版本,例如我们把这里的logrus的1.8.1版本降成1.8.0版本

go mod edit -require=github.com/sirupsen/logrus@v1.8.0

image.png

注意,主版本号大于1的时候,导入的路径是不一样的。例如

redis的github.com/go-redis/redis/v7,而不是github.com/go-redis/redis

3、移除依赖

例如,我们需要移除github.com/go-redis/redis/v7这个依赖

将其从代码层面删除之后,并不能彻底的删除

我们使用go list -m all发现还是有的

需要使用go mod tidy清理一下,再使用go list -m all发现已经没有了

4、使用go mod vendor

vendor模式其实对go module是一个很好的补充

一般用于一些不方便访问外部网络,并且对Go应用构建性能敏感的环境。

创建一个vendor目录,使用go mod vendor,把本项目中用到的第三方依赖,下载到了vendor目录下面。

并且通过 vendor/modules.txt 记录了 vendor 下的 module 以及版本