Golang依赖管理工具(go mod)

大多数语言都会有包管理工具,像Node有npm,PHP有composer

Golang的包管理在很长一段时间缺乏,切对国内用户很友好。终于在go 1.11中开始新增了module功能,用来管理依赖。

检查 go mod 是否启用

如果未启用`go mod`,升级Golang至最新版本即可。

# 执行 go mod help 如果输出正常则说明以启用
$ go mod help

使用GOPROXY代理

如果不使用GOPROXY代理,国内无法正常拉取依赖

终端执行:

$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct

完成。

MaxOS或Linux

终端执行:

$ export GO111MODULE=on
$ export GOPROXY=https://goproxy.cn

或者

$ echo "export GO111MODULE=on" >> ~/.profile
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
$ source ~/.profile

完成。

Windows

打开你的 PowerShell 并执行

C:\> $env:GO111MODULE = "on"
C:\> $env:GOPROXY = "https://goproxy.cn"

或者

1. 打开“开始”并搜索“env”
2. 选择“编辑系统环境变量”
3. 点击“环境变量…”按钮
4. 在“<你的用户名> 的用户变量”章节下(上半部分)
5. 点击“新建…”按钮
6. 选择“变量名”输入框并输入“GO111MODULE”
7. 选择“变量值”输入框并输入“on”
8. 点击“确定”按钮
9. 点击“新建…”按钮
10. 选择“变量名”输入框并输入“GOPROXY”
11. 选择“变量值”输入框并输入“https://goproxy.cn”
12. 点击“确定”按钮

go mod命令

go mod 命令简述:
download //下载依赖包
edit //编辑go.mod
graph //打印模块依赖图
init //在当前目录初始化mod
tidy //拉取缺少的模块,移除不用的模块
vendor //将依赖复制到vendor下
verify //验证依赖是否正确
why //解释为什么需要依赖

mod基本操作

初始化一个moudle,模块名为你项目名

go mod init 模块名

下载modules到本地cache

目前所有模块版本数据均缓存在 $GOPATH/pkg/mod和 ​$GOPATH/pkg/sum

go mod download

编辑go.mod文件 选项有-json-require-exclude,可以使用帮助go help mod edit

go mod edit

以文本模式打印模块需求图

go mod graph

删除错误或者不使用的modules

go mod tidy

生成vendor目录

go mod vendor

验证依赖是否正确

go mod verify

查找依赖

go mod why

go get使用

使用go module之后,go get 拉取依赖的方式就发生了变化

下载项目依赖

go get ./...

拉取最新的版本(优先择取 tag)

go get golang.org/x/text@latest

拉取 master 分支的最新 commit

go get golang.org/x/text@master

拉取 tag 为 v0.3.2 的 commit

go get golang.org/x/text@v0.3.2

拉取 hash 为 342b231 的 commit,最终会被转换为 v0.3.2:

go get golang.org/x/text@342b2e

指定版本拉取,拉取v3版本

go get github.com/smartwalle/alipay/v3

更新

go get -u

mod高级操作

更新到最新版本

go get github.com/gogf/gf@version

如果没有指明 version 的情况下,则默认先下载打了 tag 的 release 版本,比如 v0.4.5 或者 v1.2.3;如果没有 release 版本,则下载最新的 pre release 版本,比如 v0.0.1-pre1。如果还没有则下载最新的 commit

更新到某个分支最新的代码

go get github.com/gogf/gf@master

更新到最新的修订版(只改bug的版本)

go get -u=patch github.com/gogf/gf

替代只能翻墙下载的库

go mod edit -replace=golang.org/x/crypto@v0.0.0=github.com/golang/crypto@latest
go mod edit -replace=golang.org/x/sys@v0.0.0=github.com/golang/sys@latest

清理moudle 缓存

go clean -modcache

查看可下载版本

go list -m -versions github.com/gogf/gf

本文章由 https://itdashu.com 原创发布,欢迎转载,转载请注明出处。
投稿或联系站长请发送邮件至 leno@itdashu.com。
Golang教程