当您对外部模块的存储库进行了 fork (例如修复模块代码中的问题或添加功能)时,您可以让 Go 工具将您的 fork 用于模块的源代码.这对于测试您自己的代码的更改很有用.
为此,您可以使用go.mod 文件中的replace指令将外部模块的原始模块路径替换为存储库中 fork 的路径.这指示 Go 工具在编译时使用替换路径(fork 的位置),例如,同时允许您保留import 原始模块路径中的语句不变.
在以下 go.mod 文件示例中,当前模块需要外部模块example.com/theirmodule.然后该replace指令将原始模块路径替换为example.com/myfork/theirmodule模块自己的存储库的分支.
设置require/replace对时,使用 Go 工具命令确保文件描述的需求保持一致.使用go list命令获取当前模块正在使用的版本.然后使用go mod edit命令将需要的模块替换为fork:
注意: 当您使用该replace指令时,Go 工具不会像添加依赖项中所述对外部模块进行身份验证.
您可以使用go get命令从其存储库中的特定提交为模块添加未发布的代码.
以下示例提供了一些说明.这些基于源位于 git 存储库中的模块.
当您的代码不再使用模块中的任何包时,您可以停止将该模块作为依赖项进行跟踪.
要停止跟踪所有未使用的模块,请运行go mod tidy 命令.此命令还可能添加在模块中构建包所需的缺失依赖项.
要删除特定依赖项,请使用go get,指定模块的模块路径并附加 @none,如下例所示:
go get命令还将降级或删除依赖于已删除模块的其他依赖项.
如果您(或您的团队)已经设置或选择了您想要使用的不同模块代理服务器,您可能想要这样做.例如,有些人设置了模块代理服务器,以便更好地控制依赖项的使用方式.
您可以将变量设置为其他模块代理服务器的 URL,用逗号或管道分隔 URL.
GOPRIVATE或环境变量可以设置为匹配模块前缀的全局模式列表,这些GONOPROXY前缀是私有的,不应从任何代理请求.例如:
当您的代码使用外部包时,这些包(作为模块分发)成为依赖项.随着时间的推移,您可能需要升级或更换它们.Go 提供了依赖管理工具,可帮助您在合并外部依赖项时确保 Go 应用程序的安全.
本主题介绍如何执行任务以管理您在代码中承担的依赖项.您可以使用 Go 工具执行其中的大部分操作.本主题还介绍了如何执行其他一些您可能会觉得有用的依赖相关任务.
您可以通过 Go 工具获取和使用有用的包.在 pkg.go.dev 上,您可以搜索您可能觉得有用的包,然后使用go命令将这些包导入您自己的代码中以调用它们的功能.
下面列出了最常见的依赖项管理步骤.
在 Go 中,您将依赖项作为包含您导入的包的模块来管理.此过程由以下机构支持:
您可以搜索pkg.go.dev以查找具有您可能觉得有用的功能的软件包.
找到要在代码中使用的包后,在页面顶部找到包路径,然后单击复制路径按钮将路径复制到剪贴板.在您自己的代码中,将路径粘贴到导入语句中,如下例所示:
在您的代码导入包后,启用依赖项跟踪并获取包的代码进行编译.
要跟踪和管理您添加的依赖项,您首先要将代码放入其自己的模块中.这会在源代码树的根目录创建一个 go.mod 文件.您添加的依赖项将列在该文件中.
要将您的代码添加到它自己的模块中,请使用 go mod init命令.例如,从命令行切换到代码的根目录,然后按照以下示例运行命令:
该go mod init命令的参数是您的模块的模块路径.如果可能,模块路径应该是源代码的存储库位置.
如果一开始您不知道模块的最终存储库位置,请使用安全的替代品.这可能是您拥有的域的名称或您控制的另一个名称(例如您的公司名称),以及来自模块名称或源目录的路径.
当您使用 Go 工具管理依赖项时,这些工具会更新 go.mod 文件,以便它维护您的依赖项的当前列表.
在代码中包含存储库中的 go.mod 和 go.sum 文件.
当您运行go mod init创建用于跟踪依赖项的模块时,您指定一个模块路径作为模块的名称.模块路径成为模块中包的导入路径前缀.一定要指定一个不会与其他模块的模块路径冲突的模块路径.
模块路径通常采用以下形式:
①.、Go 工具可以在其中找到模块源代码的存储库的位置.
例如,它可能是github.com/ /.
如果您认为您可能会发布模块供其他人使用,请使用此最佳实践.
如果您不使用存储库名称,请务必选择一个您确信不会被其他人使用的前缀.一个不错的选择是您公司的名称.避免使用常用术语,例如widgets、utilities或 app.
Go 保证以下字符串不会在包名称中使用.
①.、test– 您可以将test用作模块路径前缀以便代码用于在另一个模块中本地测试功能进行测试.
使用test作为模块路径前缀是测试的一部分.例如,您的测试本身可能会运行go mod init test,然后以某种特定方式设置该模块,以便使用 Go 源代码分析工具进行测试.
请注意,Go 文档还用于example.com说明示例何时可能是已发布的模块.
GOPATH是你的工作目录,对于项目文件而言,项目的结构和你的工作目录的结构有很大关系.
GOPATH路径下默认是有以下三个目录的,
①src 存放源代码(比如:.go .c .h .s等)
这个文件通过路径标识 rsc.io/hello 定义了一个模块,它本身还依赖于两个其他模块:golang.org/x/text 和 rsc.io/quote ,这个模块自身编译的时候使用的是 go.mod 文件中指定的依赖列表的版本.对于更上一层的编译,其他导入这个模块的地方将使用它较新的版本编译.
包发布者最好使用语义化的 tag 发布版本,vgo 也鼓励通过打tag的版本号方式,而不是任意的提交版本.
以上就是土嘎嘎小编为大家整理的更改go语言依赖相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!