[TOC]
首先
本文是建立在 go 1.12 及以上
常用go mod命令
go mod init 初始化当前文件夹, 创建go.mod文件
go mod edit 编辑go.mod文件
go mod graph 打印模块依赖图
go mod tidy 增加缺少的module,删除无用的module
go mod vendor 将依赖复制到vendor下
go mod verify 校验依赖
go mod why 解释为什么需要依赖
go mod download 下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
依赖替换replace
在国内访问golang.org/x的各个包都需要翻墙,你可以在go.mod中使用replace替换成github上对应的库
replace (
golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dac
golang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638d
golang.org/x/text v0.3.0 => github.com/golang/text v0.3.0
)
整理依赖
- 我们在代码中删除依赖代码后,
相关的依赖库并不会在go.mod文件中自动移除
这种情况下我们可以使用go mod tidy命令更新go.mod中的依赖关系
使用代理
GOPROXY="https://gocenter.io" GO111MODULE=on go build
GOPROXY="https://gocenter.io" GO111MODULE=on go install -v -a
在golang 1.11版本推出go mod的同时
还推出了一个新的环境变量GOPROXY
它的作用类似http(s)_proxy,用于为golang代码仓库做镜像代理
export GOPROXY=https://goproxy.io
注意,GOPROXY开启以后,若失败不会自动回源
GoCenter还推出了goc工具,它可以自动回源
如果你有使用Athens私有仓库,可以将GOPROXY设置为Athens,然后将GoCenter设置为Athens的remote repository
edit 编辑go.mod
go.mod格式化
因为我们可以手动修改go.mod文件,所以有些时候需要格式化该文件
go mod edit -fmt
添加依赖
go mod edit -require=golang.org/x/text
Error
in multiple modules
build command-line-arguments: cannot load github.com/ugorji/go/codec: ambiguous import: found github.com/ugorji/go/codec in multiple modules:
github.com/ugorji/go v1.1.4 ($GOPATH\pkg\mod\github.com\ugorji\go@v1.1.4\codec)
github.com/ugorji/go/codec v0.0.0-20190320090025-2dc34c0b8780 ($GOPATH\pkg\mod\github.com\ugorji\go\codec@v0.0.0-20190320090025-2dc34c0b8780)
mingw32-make: *** [Makefile:114: buildMainMod] Error 1
- fix in
go.mod
add item
require (
github.com/ugorji/go v1.1.7 // indirect
)
and run
go mod download && go mod tidy
- fix just try in https://github.com/ugorji/go/issues/43#issuecomment-507727104
有疑问加站长微信联系(非本文作者)