Gomod 的详解

361 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第23天,点击查看活动详情

前言

  Go 1.11之后推出了依赖包管理工具Go Modules,Go项目可以在 GOPATH 之外的位置创建,当项目中仅使用了公有库作为依赖时,使用 go get 或 go mod 更新依赖。由于Go Modules默认使用代理去更新依赖,所以当使用了私有仓库作为依赖时,Go更新依赖的相关命令将不再可用。

  本博文是对gomod的讲解。

image-20221021204810965.png

1、什么是go.mod?

  Go.mod是Golang1.11版本新引入的官方包管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包的管理。

go modules 官方定义为:

  A module is a collection of related Go packages that are versioned together as a single unit. 一组package的集合,一起被标记版本,即是一个module

image-20221021204838480.png

模块是相关Go包的集合。modules是源代码交换和版本控制的单元。

go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。

modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。

输入命令即可查看配置信息

go env

image-20221021204300186.png

2、基本功能

  • 依赖管理
  • 依赖包版本控制
  • 对应的包管理平台
  • 可以私有化部署

image-20221021204923662.png

3、详细命令

1.init

代码:

go mod init

生成 go.mod 文件,此命令会在当前目录中初始化和创建一个新的go.mod文件,手动创建go.mod文件再包含一些module声明也等同该命令,而go mod init命令便是帮我们简便操作,可以帮助我们自动创建。

2.download

代码:

go mod download

下载 go.mod 文件中指明的所有依赖,使用此命令来下载指定的模块,模块的格式可以根据主模块依赖的形式或者path@version形式指定。

3.tidy

代码:

go mod tidy

整理现有的依赖,使用此命令来下载指定的模块,并删除已经不用的模块

4.graph

代码:

go mod graph

查看现有的依赖结构,生成项目所有依赖的报告,但可读性太差,图形化更方便。

5.edit

代码:

go mod edit

编辑 go.mod 文件,之后通过 download 或 edit 进行下载

6.vendor

代码:

go mod vendor

导出项目所有的依赖到vendor目录,从mod中拷贝到项目的vendor目录下,IDE可以识别这样的目录。

7.verify

代码:

go mod verify

校验一个模块是否被篡改过,查询某个常见的模块出错是否已被篡改

8.why

代码:

go mod why

查看为什么需要依赖某模块,查询某个不常见的模块是否是哪个模块的引用

总结

  以上就是gomod的全部内容,希望对你有所帮助。