跳到主要内容

go-包管理

  • 目前go的包管理主流使用 Go Modules

go包管理方案​

方案现在是否推荐作用
Go Modules✅ 官方主流依赖管理、版本管理
vendor✅ 特定场景把依赖复制进项目
dep❌ 已淘汰Go Modules 出现前的依赖管理
glide❌ 已淘汰早期第三方包管理工具
GOPATH❌ 不作为现代包管理方案Go 早期项目组织/依赖方式

Go Modules​

  • Go Modules 是 Go 官方的依赖管理机制,也是现在 Go 项目默认、标准的包管理方案
  • Module 可以理解为一个Go项目
    • 通过go mod init 初始化一个Go项目,就会生成一个go.mod
      • 这个go.mod会包含一些依赖、Module 名称
  • 通过go mod tidy 会自动整理依赖
    • 当代码中把包引用删除了,执行tidy,就会自动清除依赖
    • tidy理解为整理,整理依赖,整理一些没有用到的依赖自动清除

常用命令​

  • go mod tidy 检查依赖 + 自动补齐缺失依赖 + 下载依赖 + 删除无用依赖。
    • 会自动分析当前项目的所需依赖进行整理
命令作用类比 Node
go mod init xxx初始化 Go Modulenpm init
go mod tidy自动分析代码依赖,整理依赖包类似整理 package.json
go get xxx添加/升级依赖npm install xxx
go mod download下载依赖npm install 的下载部分
go mod graph查看依赖关系图查看 dependency tree
go mod why xxx查看为什么依赖某个包查依赖来源
go list -m all查看所有 Modulenpm list
go mod verify校验依赖是否被修改依赖完整性检查
go run .编译并直接运行当前项目npm run dev / node app.js
go build -o app编译并指定输出文件名指定构建产物名

对比js的包管理​

text
go mod init demo = npm init
Go Modules ≈ npm / pnpm 依赖管理体系
go.mod ≈ package.json
go.sum ≈ pnpm-lock.yaml
Module Cache ≈ pnpm 全局 store

基本使用​

bash
# 初始化项目
go mod init demo

# 添加 / 更新依赖
go get github.com/gin-gonic/gin

# 指定版本
go get github.com/gin-gonic/gin@v1.10.0

# 自动整理依赖
go mod tidy

# 下载依赖
go mod download

# 查看所有模块
go list -m all