go 发布自己的第三方包

2022-05-19  本文已影响0人  天空蓝雨

华为云社区 : 发布第三方包管理
上面是这个讲的有点简单了

简单来说就是, go get 会下载我们代码仓库的tag, 没有 tag 会默认下载 最后一次提交的 commit , 并标注为 类似 v0.0.0-20170915032832-14c0d48ead0c 这种

制作包的流程

github.com/yxl/first   //  git 仓库地址,这个地址相当于go 模块基本 module 名字

仓库地址为 github/组织名/项目名

image.png

这里的一定是"github.com/组织名/项目名"这样的格式
要注意模块名非常重要,就这相当于声明了我们的模块名称,以后要想使用该模块就需要使用这个名称来获取模块

git commit -am "add stringsx package content"
git push -u origin master
git tag v1.0.0
git push --tags

不管你用什么提交,界面操作也可以,总之最后就是把提交的代码弄一个 tag 出来(不弄也可以,会用最后commit 的版本)
tag 格式为
主版本号.次版本号.修订号

主版本号:当你做了不兼容的 API 修改,
次版本号:当你做了向下兼容的功能性新增,
修订号:当你做了向下兼容的问题修正

当然这个版本号只是一般要的规范,你也可以不按照这个格式

Modules 的版本强烈推荐使用上面语义化的版本控制

我们认为两个大版本之间是互相不兼容的, 比如 v2 对于 v1 是不兼容的(当然这是我们人分类的, 你要是觉得看着顺眼,也可以 tag v2 然后使用)

如果我们认为 修改了东西,和之前的版本完全不同, 有些函数参数不一样了, 那如果使用者在更新的话, 导致代码运行不起来了,那就惨了。所以我们要做的是 创建一个新的模块名字 用来 go get (区分之前低版本的名字)。

创建新的主版本, 如果你要把新的主版本合到 master, 那之前的 版本只能在 分支维护了, 或者不维护

新建分支
下载新分支,作为版本 v2
创建新的模块名字
go mod init github.com/yxl/first/v2
修改后 tag 最好是 v2.xx.xx , 让开发者一目了然,这是 v2 版本的 tag
下载 v2 版本包
go get "github.com/yxl/first/v2"
使用新版本 包

import  github.com/yxl/first/v2
v2.xxx

所以v2 版本和 之前的版本,包的名字都不一样了, 也就不会相互影响了。 之前版本的 包,也可以同时在项目引入使用了。

哈哈!!

注意点:

实际操作

go mod init github.com/tiankonglanyu/go_module_publish
go mod init 初始化 module , 和仓库路径一致
// @Time   : 2022/3/12 22:08    
// @Author : yxl      
// @File   : hello_world.go

package go_module_publish

import "fmt"

import "github.com/tiankonglanyu/go_module_publish/child_package"

func Hello(){
    fmt.Println("hello world, this is my first publish module")
    fmt.Println("this Hello func in top package")
    child_package_.Child()
}

提交注意先添加一下 ssh key

(遇不能 push 的情况,直接 百度就可以,都是小问题)
记得要启动 go mod 才行

没有tag 默认是最后一次提交的 git push tag 之后仓库就有这 tag了

注意不管是分支还是master 的tag, go get 都是可以直接下载升级到最新的 tag, 不是只从 master 的tag 下载

而且直接生成了 接口文档, 很强

---------------- over ----------------------

:

上一篇 下一篇

猜你喜欢

热点阅读