gomodcheck
gomodcheck
是一个专门用于检查 Go 项目中 go.mod
文件的 linter。它的主要目的是限制跨仓库的 local replace 使用,以确保项目依赖管理的一致性和可重现性。
比如:
replace github.com/qiniu/go-sdk/v7 => ../another_repo/src/github.com/qiniu/go-sdk/v7
../another_repo
代表当前仓库的父目录下的 another_repo
目录. 这种用法非常的不推荐.
为什么要限制跨仓库的 local replace?
-
可重现性: 跨仓库的 local replace 使得构建过程依赖于本地文件系统结构,这可能导致不同环境下的构建结果不一致。
-
依赖管理: 它绕过了正常的依赖版本控制,可能引入未经版本控制的代码。
-
协作困难: 其他开发者或 CI/CD 系统可 能无法访问本地替换的路径,导致构建失败。
-
版本跟踪: 使用 local replace 难以追踪依赖的具体版本,增加了项目维护的复杂性。
这种情况推荐怎么做?
尽可能使用正式发布的依赖版本, 即使是 private repo 也是一样的。
信息
可以使用 go env -w GOPRIVATE 来设置私有仓库, 方便 go mod 下载依赖.