之前有知道dep,vendor,glide等go的包管理方案,但没怎么用起来,modules是官方推出,看势头在后面的版本中也会持续改进,值得尝试。
modules
modules在go的1.11版本中加入,并在Go 1.13中对模块进行了重大改进和更改。
开启模块
1.13版本前请务必开启模块
export GO111MODULE=auto
初始化
在你的项目目录中执行:
go mod init 13sai/game
会生成go.mod
module 13sai/game
go 1.12
然后你可以尽情编写你的项目代码,在你每次go get的时候,modules也会将你的安装的package加入go.mod
module 13sai/game
go 1.12
require github.com/gin-gonic/gin v1.5.0 // indirect
当然,你也可以像我一样,先去写代码,不去初始化modules,写完代码之后,初始化,然后执行:
go run main.go
go mod会自行写入你项目代码中的包。
Goproxy 中国
当然,如果你没有翻墙,也没有使用国内镜像,极有可能很多包都下载失败,这时候你可以使用
Goproxy 中国。
使用方法如下:
Go 1.13 及以上(推荐)
打开你的终端并执行:
$ go env -w GOPROXY=https://goproxy.cn,direct
完成。
macOS 或 Linux
打开你的终端并执行:
$ export GOPROXY=https://goproxy.cn
或者
$ echo "export GOPROXY=https://goproxy.cn" >> ~/.profile && source ~/.profile
完成。
Windows
打开你的 PowerShell 并执行:
C:\> $env:GOPROXY = "https://goproxy.cn"
或者
1. 打开“开始”并搜索“env”
2. 选择“编辑系统环境变量”
3. 点击“环境变量…”按钮
4. 在“<你的用户名> 的用户变量”章节下(上半部分)
5. 点击“新建…”按钮
6. 选择“变量名”输入框并输入“GOPROXY”
7. 选择“变量值”输入框并输入“https://goproxy.cn”
8. 点击“确定”按钮
完成。
本地包处理
本地包使用相对路径引入时,在使用go mod会有问题,这时可以使用这样的方式引入(local.com/13sai/game
),可自行DIY。
然后执行:
$ go mod edit -require=local.com/13sai/game@v1.0.0
$ go mod edit -replace=local.com/13sai/game@v1.0.0=$PWD
vendor备份
go mod vendor
可以将modules下载到本地vendor目录,其中也包含上面的本地包。
其他
go mod tidy //整理模块(拉取缺少的模块,移除不用的模块)
go mod download//下载依赖包到本地缓存
go mod graph //打印现有依赖结构
go mod verify //校验依赖
go mod why //解释为什么需要此模块
自己也是刚开始使用golang的modules去管理项目中的包,如有错误,欢迎指正交流。
有疑问加站长微信联系(非本文作者)