使用 go mod vendor 可将依赖复制到本地 vendor 目录,实现离线构建与依赖锁定。首先确保项目初始化模块(go mod init),添加依赖后运行 go mod vendor 生成 vendor 文件夹,包含所有依赖源码。结合 go mod tidy 清理冗余依赖,并通过 go build -mod=vendor 使用 vendor 构建。适用于 CI/CD 离线环境、分发二进制包或避免外部依赖变更风险。注意每次更新依赖需重新执行 go mod vendor,vendor 目录是否提交至版本控制依团队策略而定,启用 -mod=vendor 后构建将完全依赖本地文件,不发起网络请求。

启用 Go Modules
确保项目在模块模式下运行。检查项目根目录是否有 go.mod 文件。如果没有,初始化模块:
go.mod 和 go.sum 中。
下载并生成 vendor 目录
运行以下命令,将所有依赖复制到本地 vendor 目录:
vendor 文件夹,里面包含所有依赖包的源码。
常见用途包括:
- 提交到代码仓库,供 CI/CD 离线构建
- 打包整个项目(含依赖)发送给其他团队
- 避免因外部依赖变更导致构建失败
使用 vendor 构建程序
通过 -mod=vendor 参数告诉 Go 使用 vendor 中的依赖进行构建:
go.mod 中有缺失或不一致的依赖,该命令会报错。确保先运行 go mod tidy 清理无用依赖:
go mod tidygo mod vendor
注意事项
-
vendor 不会被自动更新:每次新增或升级依赖后,需重新运行
go mod vendor - 提交 vendor 到 Git? 视团队策略而定。大型项目建议提交,小型项目可忽略
-
构建时跳过网络请求:使用
-mod=vendor后,Go 不会尝试下载远程模块










