Go Modules 的使用理解
GO Modules 是Go 语言的代码以来管理工具,类似于php的composer, 前端中的npm。
新建 go 项目时,需要在项目根目录执行go mod init
初始化生成go.mod
$ go mod init
下载依赖时,需要修改环境变量GOPROXY
go env -w GOPROXY=https://goproxy.cn,direct
//后面的地址为七牛云的仓库
//direct 关键字代表源地址,下载依赖时在代理中请求超时会自动切换到源地址
go env -w 可以快速修改Go相关的环境变量,当然也可以直接修改系统的环境变量,可能需要重启。
执行 go mod init
后,项目根目录下会生成两个文件go.mod
、go.sum
。
两个文件是下载依赖包的主要依据。go.mod
类似于 PHP 中的 composer.json ,而 go.sum
则是 composer.lock
在 go.mod
中,如果看到 require 区块里有 // indirect
字样 , 此标志标明这个依赖包还未被使用,如果你在代码的某个地方 import 到的话,VSCode 的 Go 插件就会自动将这个标志去除。
去除无用的依赖
$ go mod tidy
这个命令将会移除未使用的依赖
私有模块
如果项目使用了私有模块,更新项目依赖时可能会引发错误(没试过,猜想的),解决办法:
- GONOPROXY —— 设置不走 Go Proxy 的 URL 规则
- GONOPROXY —— 设置不走 Go Proxy 的 URL 规则
- GOPRIVATE —— 设置私有模块的 URL 规则,会同时设置以上两个变量
因为 GOPRIVATE 会同时设定以上两个,所以一般私有仓库使用 GOPRIVATE 即可
$ go env -w GOPRIVATE="git.example.com,github.com/name/project"
设置后当 go get 时,前缀为 git.example.com 和 github.com/name/project 的模块都会被认为是私有模块。
本作品采用《CC 协议》,转载必须注明作者和本文链接