一 go module 常用命令

模块维护:go mod command arguments
创建模块:go mod init example.com/hello
清除无用依赖: go mod tidy

测试packages:go test [build/test flags] [packages]
测试当前目录*_test.go:go test 运行当前文件夹下的_test.go文件

列出packages或模块:
go list [-f format] [-json] [-m] [list flags] [build flags] [packages]

列出模块所有的依赖(包括间接依赖):go list -m all

增加并安装依赖:
go get [-d] [-t] [-u] [-v] [-insecure] [build flags] [packages]

升级minor版本get get packages

升级依赖module的主版本:
import中加入语义主版本号,比如:import quoteV3 "rsc.io/quote/v3"

二 发布go module

语义版本:
语义版本由vMAJOR.MINOR.PATCH构成,当新发布版本公共API不兼容已发布版本时,新增MAJOR主版本号;当新增函数等兼容已发布版本时,增加MINOR;不改变API和则依赖时,比如修复bug,增加PATCH。
V0为初始不稳定版本,v1为第一个稳定版本。
给本地分支打标, 默认标签是打在最新提交的commit上:git tag v0.1.0
将本地分支标签推送到远端:git push origin v0.1.0

三 发布v2及以上版本

模块的V2及以上版本必须带有有不同的模块导入路径,路径带上major version。
在模块下新建v2子目录,将模块下所有的*.go文件全部铐入v2目录,将go.mod拷入v2目录,并修改module名称。
修改模块名称:
go mod edit -module github.com/killianxu/gopher/v2 v2/go.mod

将我们项目依赖的模块全改成v2版本:
find . -type f -name '*.go' -exec sed -i -e 's,github.com/my/project,github.com/my/project/v2,g' {} \;
find查找指定文件,.表示本目录及子目录,-type表示文件类型(f普通文件),-name表示文件名,-exec执行指令,-exec和{}结合表示匹配的所有文件[5]。
sed是流编辑器,用于文本处理,sed读入文件行进缓冲区,处理完成输出到屏幕,然后处理下一行。
命令用法:sed [options] 'command' file(s)
-e可以在同一行里执行多条命令,-i直接更改原文件。command中s表示替换,g表示对所有行进行替换。
git tag v2.0.0
将本地分支标签推送到远端:git push origin v2.0.0

参考文献

[1] Using Go Modules.https://blog.golang.org/using-go-modules
[2] Command go.https://golang.org/cmd/go/
[3] Publishing Go Modules.https://blog.golang.org/publishing-go-modules
[4] Go Modules: v2 and Beyond.https://blog.golang.org/v2-go-modules
[5] find命令.https://man.linuxde.net/find
[6] sed命令.https://man.linuxde.net/sed

最新文章

  1. win2003 Enterprise x64 Edtion中的DCOM服务找不到WORD应用程序
  2. Win10商店东方财富网 UWP版更新,支持平板,PC,手机
  3. JVM基本原理
  4. stringstream操纵string小总结
  5. oracle报错:ORA-00054: 资源正忙,要求指定 NOWAIT
  6. html bootstrap 表头固定在顶部,表列 可以自由滚动的效果
  7. js设计模式-建造者模式
  8. hdu 1075 What Are You Talking About
  9. ResponseBody的使用
  10. c# 获取MP3和AMR文件格式的时长
  11. C++ 数组的地址问题学习随笔
  12. 神经网络原理及其c++实现
  13. NOIP-2003 加分二叉树
  14. MySQL建立连接的过程
  15. Wad Manager的下载和运行
  16. [Linked List]Delete Node in a Linked List
  17. Laravel 日志查看器 导入log-viewer扩展
  18. Centos 7 安装 PostgreSQL
  19. SqlServer变量
  20. nginx优化php-fpm优化 压力测试达到每分150万访问量webbench网站压力

热门文章

  1. mysql之存储过程(一)
  2. The equal-likelihood model|event|experiment|probability model
  3. 2)header的使用
  4. sql常见面试(2)
  5. 7)加了基础控制器Controller.php
  6. RxJava操作符实践:8_算术和聚合操作之3_min
  7. Markdown 内嵌 HTML 语法
  8. cas单点登录打包时下载慢!
  9. less 的使用方法总结
  10. javaweb 中 error-page