go modules 初体验

13sai · · 1013 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

之前有知道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 //解释为什么需要此模块

Modules的wiki

自己也是刚开始使用golang的modules去管理项目中的包,如有错误,欢迎指正交流。


有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:13sai

查看原文:go modules 初体验

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1013 次点击  
加入收藏 微博
被以下专栏收入,发现更多相似内容
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传