Go Modules

简介

Go modules是随着 Go 1.11 发布的新型的包管理工具,这也是官方推荐的。有了go mod,项目将不再依赖于GOPATH,你可以在任何路径下创建和管理项目,但是下载的依赖包仍然会存储在$GOPATH/pkg/mod路径。

使用

配置

在 Mac 下,编辑~/.bash_profile文件,写入export Go111MODULE=on

初始化 Modules

在项目路径下,使用命令 go mod init <packagename>初始化

编辑 go.mod

初始化的 go.mod 会显示如下内容:

1
module packagename

添加依赖后:

1
2
3
4
5
6
module packagename

require (
github.com/test/A v1.2.3
github.com/test/B v1.2.3
)

如果你不知道要依赖的版本,可以使用 latest代替版本号,在安装依赖时,go 会自动安装最新的版本。

go.mod 有四种指令:

  • module:模块名称
  • require:依赖包列表以及版本
  • exclude:禁止依赖包列表(仅在当前模块为主模块时生效)
  • replace:替换依赖包列表 (仅在当前模块为主模块时生效)

下载依赖包

执行go get会下载指定的依赖包

其它命令:

  • go get -u:更新至最新的版本
  • go get v -u=patch:只更新小的修订版本,例如从 v1.2.3 到 v1.2.4
  • go get github/com/test/test@v1.2.3:更新至指定版本

go mod vendor

go mod vendor将会复制 modules 到项目的 vendor 文件下,貌似只会复制代码中引用的库,而不是 go.mod 中定义的全部 modules

go mod help

go mod help会显示 go mod 命令帮助:

1
2
3
4
5
6
7
8
download    下载依赖的module到本地cache
edit 编辑go.mod文件
graph 打印模块依赖图
init 再当前文件夹下初始化一个新的module, 创建go.mod文件
tidy 增加丢失的module,去掉未用的module
vendor 将依赖复制到vendor下
verify 校验依赖
why 解释为什么需要依赖
您的支持将鼓励我继续创作!
0%