GoModules使用

date
Apr 26, 2023
slug
gomoduse
status
Published
tags
Golang
summary
type
Post
Modules官方定义为:
模块是相关Go包的集合,modules是源代码交换和版本控制的单元,go命令直接支持使用modules,包括记录和解析对其他模块的依赖性。modules替换旧的基于GOPATH的方法来指定在给定构建中使用哪些源文件。
 

Go Mod命令

  • go mod init:初始化go mod,生成go.mod文件,后可接参数指定 module 名,上面已经演示过。
  • go mod download:手动触发下载依赖包到本地cache(默认为$GOPATH/pkg/mod目录)
  • go list -m -json all:以 json 的方式打印依赖详情
  • go mod graph: 打印项目的模块依赖结构
  • go mod tidy :添加缺少的包,且删除无用的包
  • go mod verify :校验模块是否被篡改过
  • go mod why: 查看为什么需要依赖
  • go mod vendor :导出项目所有依赖到vendor下
  • go mod edit :编辑go.mod文件
加粗为常用命令。
 

go.mod

执行go mod init xxx后会创建一个go.mod文件,该文件内容将会被go toolchain全面掌控。go toolchain会在各类命令执行时,比如go get、go build、go mod等修改和维护go.mod文件。
go.mod文件提供了下面四个命令:
  • module 指定包的名字
  • require 指定的依赖项,预设是最新版,可以指定版本号
  • replace 语句可以替换依赖项
  • exclude 语句可以忽略依赖项
 

参考资料:

© 刘德华 2020 - 2025