这是特定于:https ://github.com/twitchtv/twirp
该库当前版本为 v7,我们希望将其迁移到 go 模块中。该库当前是从其他库导入的,如下所示:
// go.mod
require github.com/twitchtv/twirp v7.2.0+incompatible
// .go code
import "github.com/twitchtv/twirp"
如果我们go.mod
在库中添加一个文件,现在每个其他库都被迫更改导入路径,如下所示:
// go.mod
require github.com/twitchtv/twirp v7.2.0
// .go code
import "github.com/twitchtv/twirp/v7"
我们如何迁移 Twirp 库以使用 go 模块而不强制其他库更新其导入路径?
这里的主要问题是单个服务可能会导入在不同版本上生成的多个 Twirp 客户端,并使用依赖于特定类型的辅助函数。强制导入路径更新将强制所有这些辅助函数需要管理旧类型和新类型,并且我们不能为所有类型创建别名(某些类型是函数)。这将创建一个升级锁。这是否意味着 Twirp 库需要+incompatible
永远保持模式?