首页 > 后端开发 > Golang > 正文

在 Go 中设置和使用私有模块

Patricia Arquette
发布: 2024-10-22 17:16:03
原创
976 人浏览过

Setting up and utilizing private modules in Go

如果没有合适的资源可供参考,开始使用 Go 中的私有模块可能会成为一项艰巨的任务。这是因为 Go 模块不是从中央存储库存储或提供的,但可以从不同的存储库中提取它们;一个例子是 Github。

将公共 Go 包导入到您的项目中就像运行单个命令一样简单:

$ 去获取 github.com/author/module-name

另一方面,在 Go 中设置和使用私有模块将需要更多步骤。使用私有模块,您可以在您选择的存储库中托管私有包并使用它,而不必使代码公开访问。

要设置私有模块,首先创建一个目录并导航到该目录。通过运行以下命令初始化模块:

$ go mod init github.com/author/module-name

下一步是提交,为提交添加一个标签,这有助于对模块进行版本控制,并将模块推送到存储库,在本例中为 Github。

在此示例中,模块是项目的根,但在某些情况下,另一个 go 模块是根,并且您可以拥有子模块。对于子模块,上面的命令将转换为以下内容:

$ go mod init github.com/author/root-module/module-name

获取私有存储库
该模块现在托管在存储库中,但它是私有的,因此需要进行身份验证才能在项目中提取和使用它。项目可以通过使用本地环境变量进行身份验证、通过 Github 操作或 dockerfile 来访问模块。

在本文中,我们将重点讨论在利用本地环境变量的同时访问私有存储库。这可以通过以下两个选项来实现。

在这两个选项中,都需要设置 GOPRIVATE 环境变量。 GOPRIVATE 环境变量帮助 Go 命令确定正在获取的模块是公共的还是私有的。它包含根据存储库包名称检查的模式,并且任何与此变量匹配的包名称都不会通过公共 Go 缓存服务器获取。

通过在模块目录中运行以下命令来设置并导出 GOPRIVATE 环境变量。

$ export GOPRIVATE=github.com/author/module-name

或者,您可以使用 Go env 命令设置 GOPRIVATE 变量,如下所示:

$ go env -w GOPRIVATE=github.com/author/module-name
$ go env GOPRIVATE
登录后复制
登录后复制

*将 git 配置为通过 SSH 而不是 HTTP(S) 获取
*

Go get 命令使用 http 或 https 从 git 获取模块。为了确保它使用 ssh 来拉取模块,您可以通过编辑 git 配置文件或使用以下命令来实现:

$ go env -w GOPRIVATE=github.com/author/module-name
$ go env GOPRIVATE
登录后复制
登录后复制

*使用个人访问令牌配置 Go
*

设置 GOPRIVATE 变量后,此选项需要您设置并导出另外两个变量。

GITHUB_ACCESS_TOKEN 变量设置为个人访问令牌,您可以从 Github 设置中创建:个人访问令牌。确保为令牌命名并在范围部分选择存储库。

要设置和导出的另一个变量是设置为 localhost 的 GONOPROXY 变​​量,突出显示该 url 不应与校验和数据库进行比较。

$ git config --global url."git@github.com:author/module-name".insteadOf "https://github.com/author/module-name"
登录后复制

最后,更新全局 git 配置以使用生成的个人令牌。

$ export GONOPROXY=localhost 
$ export GITHUB_ACCESS_TOKEN=<your-token>
登录后复制

完成这些配置后,您现在应该能够使用上述任一选项获取私有模块并在项目中使用它。要获取模块,请运行 go run 。用于构建项目的命令,该项目会在添加项目依赖项之一时依次拉取模块,或者运行指定模块 github 路径的 go get 命令。

以上是在 Go 中设置和使用私有模块的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!