最近在工程中对模块接触的比较多,下面分享一下如何进行Go的模块化开发。
使用Go的模块管理需要要求你的Go版本在1.11以上,主要目的就是用模块来管理依赖,首先确保环境变量中GO111MODULE=on状态。
一个模块就是一组包的集合,也就是go.mod文件所在目录下定义的所有包都属于这个模块,go.mod文件定义了模块的路径,这个路径是用于import包的路径的集合,在编译时该模块会依赖其他模块。该模块依赖的模块会通过模块路径加语义化版本号的格式添加到go.mod中。
go mod命令
go mod download | 下载依赖的module到本地cache(缓存) |
go mod edit | 编辑go.mod文件 |
go mod graph | 打印模块依赖图 |
go mod init | 在当前目录下生成一个新的module,并创建go.mod文件 |
go mod tidy | 补充丢失的module,去掉未用到的module |
go mod vendor | 将依赖拉取到vendor目录下 |
go mod verify | 校验依赖 |
go mod why | 解释为什么需要依赖 |
创建module
使用“go mod init MODILENAME”命令可以创建一个空的go.mod文件:
go.mod文件在项目根目录下创建一次即可,项目根目录下的所有子目录的包都属于这个模块。该模块的包被导入时,import的路径使用“module/package”的模式。
添加依赖
1)添加特定版本的包时,需要在go.mod文件中有对应的require描述才能按对应描述的版本下载。
2)添加最新版本的包,没有在go.mod文件中有require描述,则会按最新版本下载该包,同时将该包加入到go.mod文件中。
移除依赖
当你不再使用一个包时,则从代码文件的import中移除,但在go.mod文件的require中不会移除,需要使用go mod tidy命令来将其移除。
总之,使用模块进行开发非常的便于管理,提高开发效率。