Go 模块、私有仓库和 Gopath
简介:
引入了 Go 模块来管理Go 项目中的依赖项。然而,当将内部代码库从外部依赖管理器(如 dep)转换到 Go 模块时,开发人员在处理私有存储库时可能会遇到挑战。本题分析了 Go 模块在私有存储库中的行为及其对 Gopath 的影响。
无点路径和标准库:
正如 OP 提到的,无点路径Go 中的模块通常是为标准库保留的。这一限制源于 Go 作者想要在域名和项目之间建立绑定的意图。但是,由于内部项目不使用 go get,因此该原则并不直接适用于这种情况。
全有或全无依赖解析:
OP 正确地假设一旦使用 Go 模块,所有依赖项都必须遵守模块系统。然后,Gopath 变得不那么重要,主要用作下载模块的缓存。这种转变需要使用 go get 解决依赖关系,可能需要使用私有存储库。
处理私有存储库:
要合并私有存储库,开发人员可以考虑使用以下解决方法: GITHUB_TOKEN 授权访问私有存储库。此外,可以使用 GOPRIVATE 来指定哪些存储库应被视为私有存储库。这种方法可以实现私有模块的无缝依赖关系解析。
独立私有模块开发:
如果需要,开发人员可以将私有模块移出 Gopath 并独立开发它们。然而,这种方法可能需要远程推送和拉取更改,这是 OP 想要避免的。
结论:
虽然 Go 模块有潜力增强依赖管理,了解它们对私有存储库的影响至关重要。向 Go 模块的过渡需要采用“全有或全无”的方法,其中所有依赖项都必须通过模块系统来解决。使用私有存储库需要使用授权令牌并有效管理私有模块的可用性。然而,开发人员可以利用 GOPROXY 实现离线开发,从而减少持续远程交互的需求。
以上是Go 模块如何处理私有存储库并影响 GOPATH?的详细内容。更多信息请关注PHP中文网其他相关文章!