一 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. mui a链接的点击

    mui里面,使用click点击在有时候是无效的,或者点击的位置错位.在别处点击才有效. mui中对a的点击应该这样写: mui('body').on('tap', "#chart" ...

  2. ORs-1-introduction

    introduction: 1.Olfactory receptors (ORs)很重要 2.已知的ORs的分子结构,但仍存在没清楚的地方: Though the relationship betwe ...

  3. [LC] 203. Remove Linked List Elements

    Remove all elements from a linked list of integers that have value val. Example: Input: 1->2-> ...

  4. Linux_更改主机名

    老师上linux课截图必须改主机名字,每个人一个代号,所以就写篇这个咯 查看主机名 [root@localhost.localdomain Desktop]# hostname localhost.l ...

  5. 吴裕雄--天生自然 R语言开发学习:R语言的简单介绍和使用

    假设我们正在研究生理发育问 题,并收集了10名婴儿在出生后一年内的月龄和体重数据(见表1-).我们感兴趣的是体重的分 布及体重和月龄的关系. 可以使用函数c()以向量的形式输入月龄和体重数据,此函 数 ...

  6. Linux基础常用命令大全学习

    1.ls命令 就是list的缩写,通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录.文件夹.文件权限)查看目录信息等等 常用参数搭配: ls -a 列出目录所有文 ...

  7. mysql中造3千条数据(3种方法)

    方法一:存储过程 1.存储过程如下: delimiter $$ DROP PROCEDURE IF EXISTS data CREATE PROCEDURE data(in i int) BEGIN ...

  8. [LC] 300. Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. Example: Inp ...

  9. spring mvc +@Valid +@RequestBody 来做参数校验返回400,并且不显示具体message 如何解决

    参考文档: https://www.oschina.net/question/115867_2282711   谢谢原作者

  10. springboot项目实现jar包外配置文件管理

    背景 为实现快速搭建和开发,项目以Springboot框架搭建,springboot搭建的项目可以将项目直接打成jar包并运行,无需自己安装配置Tomcat或者其他服务器,是一种方便快捷的部署方式. ...