go mod vendor 可将依赖复制到本地 vendor 目录,确保离线构建;需先初始化模块、整理依赖并生成 go.mod 和 go.sum,再执行 go mod vendor 生成 vendor 文件夹;构建时使用 go build -mod=vendor 强制读取 vendor 中的依赖,保证构建一致性。

开启 Go Modules 并初始化项目
确保你的项目使用 Go Modules 管理依赖。若还未初始化,可在项目根目录执行:
-
go mod init your-project-name— 初始化模块,生成 go.mod 文件 - 添加依赖后(如 import 并运行
go build),会自动生成 go.sum 文件
拉取并整理依赖
确保所有依赖已正确写入 go.mod。可通过以下命令同步依赖:
-
go mod tidy— 清理未使用的依赖,并补全缺失的模块 - 该步骤可保证 go.mod 和 go.sum 反映当前代码的真实依赖关系
执行 go mod vendor 生成 vendor 目录
运行如下命令,将所有依赖复制到本地 vendor 目录:
go mod vendor- 成功后会在项目根目录生成 vendor 文件夹,包含所有第三方包源码
- 同时生成 vendor/modules.txt,记录 vendored 模块列表
使用 vendor 构建和编译项目
启用 vendor 模式后,Go 会优先从 vendor 中读取依赖:
立即学习“go语言免费学习笔记(深入)”;
-
go build -mod=vendor— 强制使用 vendor 中的依赖进行构建 - 若 vendor 缺失或不完整,构建会失败,提示 missing dependencies
- CI/CD 或离线环境建议始终加上
-mod=vendor参数
提交 vendor 到版本控制(视团队策略而定)
是否将 vendor 提交到 Git 等版本控制系统,取决于团队需求:
- 优点:构建可重现、适合离线部署、CI 更稳定
- 缺点:仓库体积变大,更新依赖时 diff 冗长
- 常见做法:内部项目或发布分支提交 vendor;开发主干可忽略
- 若提交,建议在 .gitignore 中保留例外:
!vendor/
清理 vendor 目录
如需重新生成 vendor,先删除旧目录再执行命令:
rm -rf vendor vendor.modules.txt-
go mod vendor— 重新生成










