golang module 开发基本流程
背景
目前在mac上开发, golang版本为 go version go1.12.5 darwin/amd64
需要提前设置全局变量
1 |
|
这是自己总计的开发流程, 可能跟其他地方描述有出入,需灵活参考
操作流程
创建module项目
即初始化 仓库, 我的申请仓库地址
https://github.com/l1905/golang_module_demo
本地clone 下来,进行项目初始化
项目初始化不需要在$GOPATH
目录中, 任意其他目录即可
1 |
|
这里的github.com/l1905/golang_module_demo
对应我们的包名,也是我们的github地址
这里会新建 go.mod
文件, 大致输出如下
1 |
|
初始化文件目录, 引入三方依赖包。
1 |
|
speak.go 文件中 使用第三方包
1 |
|
通过 go build
或者 go test
,引入三方包
1 |
|
这时候 go会自动帮我们把三方包下载到 $GOPATH
目录中, 具体路径为 ` $GOPATH/pkg/mod`, 目录内容如下
1 |
|
GOLANG设置
如果goland需要识别 module
, 则需要去 Preferences>Go->Go Modules(vgo)
勾选,启用 gomodule, 否则的话, 无法引入本地的包, main.og 如下
1 |
|
可以将依赖包 都到到当前文件夹vendor
中,
1 |
|
如果依赖vendor
目录中的三方包, 则需要 编译时 指定
1 |
|
开发完成,提交到 github上, 在github上打tag v0.0.1
下面主要来测试怎么调整依赖包
新建测试项目(golang_module_test
), 引入我们刚才的包(golang_module_demo
)
1 |
|
通过 go mod
查看所有版本
1 |
|
我们发现已经有新的版本发布, 我们指定更新这个包文件
1 |
|
发现包依赖文件已经调整,
重点:go get 默认拉取latest 最新 V1.x.x 或者 最新的 v0.x.x, 不会自动拉取v2, 或者 v3:
更新包 以及间接包到最新版本
1 |
|
列出所有的依赖包
对比同样可以参考 go.mod
1 |
|
清除无用依赖
1 |
|
引入代理 国内源
1 |
|
参考文章
- https://www.4async.com/2019/03/using-go-modules/
- https://blog.golang.org/using-go-modules
- https://github.com/golang/go/wiki/Modules#how-do-i-use-vendoring-with-modules-is-vendoring-going-away