一 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

Go module学习笔记的更多相关文章

  1. Requests:Python HTTP Module学习笔记(一)(转)

    Requests:Python HTTP Module学习笔记(一) 在学习用python写爬虫的时候用到了Requests这个Http网络库,这个库简单好用并且功能强大,完全可以代替python的标 ...

  2. Requests:Python HTTP Module学习笔记(二)(转)

    在上一篇日志中对Requests做了一个整体的介绍,接来下再介绍一些高级的用法,主要资料还是翻译自官网的文档,如有错漏,欢迎指正. 参考资料:http://docs.python-requests.o ...

  3. python学习笔记之module && package

    个人总结: import module,module就是文件名,导入那个python文件 import package,package就是一个文件夹,导入的文件夹下有一个__init__.py的文件, ...

  4. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

  5. angular学习笔记(十五)-module里的'服务'

    本篇介绍angular中的模块:module 在笔记(二)http://www.cnblogs.com/liulangmao/p/3711047.html里已经讲到过模块,这篇主要讲模块的 '服务' ...

  6. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  7. Sass学习笔记之入门篇

    Sass又名SCSS,是CSS预处理器之一,,它能用来清晰地.结构化地描述文件样式,有着比普通 CSS 更加强大的功能. Sass 能够提供更简洁.更优雅的语法,同时提供多种功能来创建可维护和管理的样 ...

  8. react-native学习笔记--史上最详细Windows版本搭建安装React Native环境配置

    参考:http://www.lcode.org/react-native/ React native中文网:http://reactnative.cn/docs/0.23/android-setup. ...

  9. linux驱动开发之块设备学习笔记

    我的博客主要用来存放我的学习笔记,如有侵权,请与我练习,我会立刻删除.学习参考:http://www.cnblogs.com/yuanfang/archive/2010/12/24/1916231.h ...

随机推荐

  1. 前端-js-长期维护

    ###############    JS简介和JS引入     ################ <!DOCTYPE html> <html lang="en" ...

  2. php配置memcached的扩展。

    (一)安装memcached服务器 1根据系统下载相应版本的memcached服务器版本:如win7(64位=====>memcached-win64/memcached.exe 2.解压到目录 ...

  3. openpyxl传入表名时不要使用默认的sheet表名

    openpyxl传入表名时不要使用默认的sheet表名,会报错 处理:改一下表名即可

  4. practically|exclamation|defy|thrilled|

    ADV 简直:几乎Practically means almost, but not completely or exactly. He'd known the old man practically ...

  5. Ubuntu16.04使用sublime text3编写C语言后,实现编译并自动调用bash终端运行程序

    实现编译并自动调用bash运行程序只需要新建自己的.build文件就OK 依次打开: tools->building system->new building system 后,把下面的内 ...

  6. makefile中的变量赋值

    在makefile中赋值方式有:'='.':='.'?='和'+='. A = a $(B) B = b all: echo $(A) #运行结果:echo a b a b 这种赋值方式是没有先后顺序 ...

  7. Android ListView 常用技巧总结

    本文对 ListView 中的一些常用技巧做一个总结.附:虽然现在 RecyclerView 已逐渐取代 ListView,但实际情况是大部分项目中还在使用 ListView.当然,后续我会在我的博客 ...

  8. 解决android 无法打开 DDMS 中的data目录

    把上面操作一遍就可以了,如果还是不行你可以检查下 su 是不是输入错误了.

  9. ES6中 const 关键字

    const声明一个只读的常量.一旦声明,常量的值就不能改变. 定义后可以使用但不能修改 但是,const 定义的对象可能与我们想象的不太一样 定义了对象b ,我们可以在b上添加修改属性,再看一个列子 ...

  10. Jennifer Chayes: 生活始终在你手中

    Jennifer Chayes ​​听到Mark Kac.Freeman J. Dyson.林家翘,或者是David I. Gottlie.BerndSturmfels和Sir John Ball等 ...