go module

1、go mole

go mole介绍#

go mole是go官方自带的go依赖管理库,在1.13版本正式推荐使用

go mole可以将某个项目(文件夹)下的所有依赖整理成一个 go.mod 文件,里面写入了依赖的版本等

使用go mole之后我们可不用将代码放置在src下了

开启go mole

windows:

set GO111MODULE=on

mac:

export GO111MODULE=on

然后输入

go env

查看 GO111MODULE 选项

GO PROXY#

go mole 的目的是依赖管理,所以使用 go mole 时你可以舍弃 go get 命令(但是不是禁止使用, 如果要指定包的版本或更新包可使用go get,平时没有必要使用)

因go的网络问题, 所以推荐使用 goproxy.cn 设置详见

https://github.com/goproxy/goproxy.cn/blob/master/README.zh-CN.md

初始化#

为你的项目第一次使用 GO MODULE(项目中还没有go.mod文件) 

进入你的项目文件夹

cd xxx/xxx/test/

初始化 MODULE

go mod init test(test为项目名)

我们会发现在项目根目录会出现一个 go.mod 文件

注意,此时的 go.mod 文件只标识了项目名和go的版本,这是正常的,因为只是初始化了

检测依赖#

go mod tidy

tidy会检测该文件夹目录下所有引入的依赖,写入 go.mod 文件

写入后你会发现 go.mod 文件有所变动

此时依赖还是没有下载的


下载依赖#

我们需要将依赖下载至本地,而不是使用 go get


go mod download

如果你没有设置 GOPROXY 为国内镜像,这步百分百会夯住到死


此时会将依赖全部下载至 GOPATH 下,会在根目录下生成 go.sum 文件, 该文件是依赖的详细依赖, 但是我们开头说了,我们的项目是没有放到 GOPATH 下的,那么我们下载至 GOPATH 下是无用的,照样找不到这些包


导入依赖#

go mod vendor

执行此命令,会将刚才下载至 GOPATH 下的依赖转移至该项目根目录下的 vendor(自动新建) 文件夹下

依赖更新#

这里的更新不是指版本的更新,而是指引入新依赖

依赖更新请从检测依赖部分一直执行即可,即


go mod tidy

go mod download

go mod vendor

新增依赖#

有同学会问,不使用 go get ,我怎么在项目中加新包呢?

直接项目中 import 这个包,之后更新依赖即可

在协作中使用 GOMODULE#

要注意的是, 在项目管理中,如使用git,请将 vendor 文件夹放入白名单,不然项目中带上包体积会很大

git设置白名单方式为在git托管的项目根目录新建 .gitignore 文件


 设置忽略即可.


但是 go.mod 和 go.sum 不要忽略


另一人clone项目后在本地进行依赖更新(同上方依赖更新)即可


GOMODULE常用命令#

 

go mod init  # 初始化go.mod

go mod tidy  # 更新依赖文件

go mod download  # 下载依赖文件

go mod vendor  # 将依赖转移至本地的vendor文件

go mod edit  # 手动修改依赖文件

go mod graph  # 打印依赖图

go mod verify  # 校验依赖

 


版权声明本文仅代表作者观点,不代表本站立场。本文系作者授权发表,未经许可,不得转载。图文来源网络,侵权删!

搜索