【发布时间】:2020-08-16 05:38:36
【问题描述】:
我无法真正理解拥有供应商文件夹的目的。根据我了解到的情况,供应商 folder 似乎只有在您尝试使您的 repo 与早于1.11 的 golang 版本兼容时才有用。我们正在运行 golang 1.12.14。
当我把这件事告诉我的同事时,他说:
请使用带有模块的供应商 - go 没有全局工件。目前,这是确保您拥有密封构建并且当有人更改其存储库中的某些内容时您的代码不会中断的最佳选择。
我认为这就是 Go 模块的作用?我问了这个问题,评论者说我不应该使用供应商? Does it make sense to add `go mod vendor` to a pre-commit hook?
【问题讨论】:
-
vendor是一种可以在模块之前冻结依赖项的方法。注意How to Write Go Code的文档中根本没有提到它 -
你的同事是对的,现在他的结论是错误的。模块允许使用代理进行可重现的构建。
-
有时我确实发现将第三方代码放在我项目根文件夹上名为“vendor”的单独(但相关)文件夹中非常实用。探索和修改代码非常容易。就像获得一个组件并对其进行调整(我什至修复了一些东西)。我想有没有供应商文件夹这不是好事或坏事,这取决于。说到这里,我不得不说供应商文件夹比您所说的更广泛地有益。
标签: go vendor go-modules govendor