在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中管理依赖关系的最佳实践是什么?
我可以看到两种方法.
是否为具有重大变化的主要版本创建新模块?
例如,我的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或工作功能.
这将使您完全控制Go代码所需的外部依赖项版本.
例如,您可以将github.com/RichardKnop/somelibrary分叉到您自己的GitHub帐户中,然后在您的代码中执行以下操作:
import "github.com/ForkingUser/somelibrary"
Run Code Online (Sandbox Code Playgroud)
然后你必须分叉所有外部依赖,这似乎有点矫枉过正.但是,它可以让您完全控制版本.您可以将叉子保留在您知道正在使用代码的版本中,并且只有在检查新版本的依赖项不会破坏任何内容后才能更新分叉.
思考?
go ×1