在 Go 语言模块化编程 - go module ( 一 ) 章节中,我们介绍了 go module 的一些基本知识,现在,是时候开始动手编写一个简单的 go module 了
等等,当我写完上面这句话时,我突然间发现忘记介绍 go module
相关的工具了,哎,又要废去一个章节来讲解它们
初始化
要创建一个 go module
,首先要做的就是创建 go.mod
文件,当然了,从前面的章节中我们已经知道了 go.mod
文件大概长啥样
module my/thing require ( one/thing v1.3.2 other/thing v2.5.0 // indirect ... ) exclude ( bad/thing v0.7.3 ) replace ( src/thing 1.0.2 => dst/thing v1.1.0 )
但是,等等,你真的想自己手动 touch go.mod
然后 vi go.mod
来创建吗?go
工具链里有没有提供相关的命令来简化这些操作呢 ?
当然有的,go
这次很大方,一次性给足了需要的所有工具
我们可以使用下面的命令来创建一个 go.mod
文件
go mod -init
如果模块根目录位于 VCS
之外,则必须使用 -module <path>
给命令传递导入路径
为了向前兼容,也为了简化转换过程,模块创建命令还支持流行的依赖管理工具,如 dep
,glide
,glock
,godep
等
同步 sync
如果要清除未使用的依赖项或获取新的依赖项,可以使用 sync
选项
go mod -sync
添加、排除、替换依赖项
添加、排除、替换依赖项有两种方式
- 手动编辑
go.mod
- 使用
go
工具包提供的 CLI 命令
简单保险起见,我们推荐你使用 CLI
,包含以下命令
添加一个新的依赖,@version
用于指定依赖的版本
go mod -require one/thing@version
删除一个依赖
go mod -droprequire one/thing
排除一个依赖
go mod -exclude bad/thing@version
恢复被排除的依赖
go mod -dropexclude bad/thing@version
替换一个依赖
go mod -replace src/thing@version=dst/thing@version
放弃一个替换
go mod -dropreplace src/thing@version
当你看完这些命令,是不是感觉,相比于 Python 语言的 pip
命令,简直多了好几个多此一举的命令
依赖图谱
要显示一个模块的依赖关系,可以使用下面的命令来显示依赖图谱
go mod -graph
生成组织机构
如果出于向前兼容性考虑,你可能需要通过 组织机构 来发送应用程序,那么可以下面的命令从 go.mod
生成组织名目录
go mod -vendor
显示帮助信息
上面这些命令你不必全部都记住,只在需要的时候可以通过 go help mod
或 go help modules
来显示模块的更多信息
后记
这些,终于把 go module 的工具链讲清除了,下一个章节,应该可以开始开发自己的简单模块了吧
算了,不打包票,可能要等到下一个章节了才清楚