go mod 相关知识

go mod 介绍

go modules 是 golang 1.11 新加的特性。现在1.12 已经发布了,是时候用起来了。Modules官方定义为:

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。 go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

如何使用 Modules

把 golang 升级到 1.11 以上版本, 通过 go env 查看配置信息

go env

GO111MODULE 有三个值:off, on和auto(默认值)。

GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式来查找。

GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找。

GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形: 当前目录在GOPATHc之外且该目录包含go.mod文件 当前文件在包含go.mod文件的目录下面。

初始化包环境

go mod init  lesscodetest[自定义包名称]

go mod tidy 命令

go mid tidy 命令作用 :

引用项目需要的依赖增加到go.mod文件, 去掉go.mod文件中项目不需要的依赖。

go mod tidy

常用命令

go mod init    生成go.mod文件
go mod download    下载go.mod文件中指明的所有依赖
go mod tidy    整理现有的依赖
go mod graph    查看现有的依赖结构
go mod edit     编辑go.mod文件
go mod vendor              导出项目所有的依赖到vendor目录
go mod verify                 校验一个模块是否被篡改过
go mod why                   查看为什么需要依赖某模块