相关疑难解决方法(0)

Golang依赖管理最佳实践

在Golang中,我们可以在GitHub上指定开源库作为依赖项.例如:

import "github.com/RichardKnop/somelibrary"
Run Code Online (Sandbox Code Playgroud)

这将尝试根据您的Go版本查找分支,如果我理解正确,则默认为master.

因此无法导入依赖项的特定版本,例如:

import "github.com/RichardKnop/somelibrary#v1.4.8"
Run Code Online (Sandbox Code Playgroud)

在Go中管理依赖关系的最佳实践是什么?

我可以看到两种方法.

I.版本模块

是否为具有重大变化的主要版本创建新模块?

例如,我的Go库可以定义模块v1和v2,那么你可以这样做:

import "github.com/RichardKnop/somelibrary/v1"
Run Code Online (Sandbox Code Playgroud)

要么:

import "github.com/RichardKnop/somelibrary/v2"
Run Code Online (Sandbox Code Playgroud)

根据您的需要.对v1或v2所做的任何更改都不需要破坏任何API或工作功能.

II.分叉

这将使您完全控制Go代码所需的外部依赖项版本.

例如,您可以将github.com/RichardKnop/somelibrary分叉到您自己的GitHub帐户中,然后在您的代码中执行以下操作:

import "github.com/ForkingUser/somelibrary"
Run Code Online (Sandbox Code Playgroud)

然后你必须分叉所有外部依赖,这似乎有点矫枉过正.但是,它可以让您完全控制版本.您可以将叉子保留在您知道正在使用代码的版本中,并且只有在检查新版本的依赖项不会破坏任何内容后才能更新分叉.

思考?

go

39
推荐指数
3
解决办法
1万
查看次数

标签 统计

go ×1