要下班了,摸一会儿鱼。
想到一个问题就是如果把 vendor 目录纳入 git 管理,但是如果在 windows 下和 linux 下同时进行开发,用的 go sdk 都是不一样的,go mod vendor 好像就有问题。
1
mooyo 2 天前 ![]() 五年前就不用 vendor 了吧,老项目吗?
|
![]() |
2
Cannian 2 天前 ![]() 现在都用 mod 了,老项目才用 vendor
|
![]() |
3
Nazz 2 天前 ![]() 我现在用 go mod tidy 了, 以前喜欢 vendor
|
![]() |
5
lasuar 2 天前 ![]() 只有当你用到了那种私有库、临时库,担心引用的库未来可能消失 的时候才会用 vendor 。不过开发时也不好用,比如下载了新库时,直接在 IDE 中输入是不能自动识别的(纯 mod 模式就可以)。现在我都不用 vendor 了,如果有那种比较重要的库,干脆直接 down 下来放本地的 internal pkg 。
|
6
Cheivin 2 天前 ![]() 如果你用私有库还要把代码跟项目 git 一起,用 go mod 然后 repace 路径吧
|
![]() |
8
Trim21 2 天前 ![]() > 但是如果在 windows 下和 linux 下同时进行开发,用的 go sdk 都是不一样的,go mod vendor 好像就有问题
会有啥问题? go mod vendor 会选择只 vendor _linux 文件或者 _windows 文件然后忽略另一个吗? |
9
icy37785 2 天前 via iPhone ![]() vendor 是坏文明,vendor 的正确使用姿势就是不用。
|
10
sardina 2 天前 ![]() https://github.com/goproxy/goproxy 内网搭建一个 goproxy
|
![]() |
11
stormtrooperx5 2 天前 ![]() 咋这么多人不用 vendor ?镜像打包速度快很多啊
|
![]() |
12
iyaozhen 2 天前 ![]() 99%场景不需要 go mod vendor
现在唯一用 vendor 的地方,是要打 go 插件,而且也不把 vendor 提交到 git ,而是 CI 环境固定 go 版本(宿主要和插件一模一样版本号),执行 go mod vendor 后再 build |
13
HappyAndSmile 1 天前
@stormtrooperx5 自己搭一个 go mod proxy ,为什么会需要 vendor ?为什么会慢?
|
![]() |
15
arcfya 1 天前 ![]() 除非特殊环境一定不允许开 go mod proxy (比如各种政府国企单位),不然不推荐使用 vendor 。
vendor 在不同 go sdk 下确实可能有问题,比如 go 的那几个 crypto 库,我就遇到过 sdk 不兼容的问题 |
![]() |
16
stormtrooperx5 1 天前
@HappyAndSmile 依赖库多了再怎么自建 proxy 也比不上直接读本地快
|
17
zgh123 1 天前
如果旧项目采用的 vendor ,如何升级把 vendor 目录从 git 中去除呢?
|
![]() |
18
lasuar 1 天前
@zgh123 #17 你这个问题直接 kimi 可以解决,我就不贴答案了。问题是“采用 vendor 模式的 go 项目中,如何升级把 vendor 目录从 git 中去除。注意,vendor 内可能有已经失效的远程库,此时如何区分”。
解决的关键是在本地新建 xvendor 目录存放失效的远程库,然后在 go.mod 文件中使用 replace 语法帮助 go 定位这些库。 |
![]() |
19
to2false 15 小时 29 分钟前
vendor 放进 git ,我就有个问题,是不考虑 code review 吗
|
![]() |
20
stormtrooperx5 10 小时 35 分钟前
@to2false 自动排除 vendor 目录,这不就一行脚本的事
|