【发布时间】:2020-03-13 03:46:54
【问题描述】:
我正在使用 Go 模块,并且我使用 vendoring 模式,因为它可以将我的 CI 速度提高 2 倍。
我愿意:
go mod vendor
go build -mod=vendor ...
我可以毫无问题地构建我的应用程序。
但是当我想使用go get,比如安装golint:
go get -u golang.org/x/lint/golint
它将再次下载我所有的项目依赖项,而不仅仅是 golint。
如果我尝试:
go get -mod=vendor -u golang.org/x/lint/golint
我明白了:
go get: disabled by -mod=vendor
Lint 将在我的开发 docker 镜像中使用,但不会在 prod 中使用,所以我不想将它添加到 go.mod
我该怎么办?
【问题讨论】:
-
为什么你的 prod docker 镜像会包含任何源代码?
-
不是,但我猜如果有更多依赖项,二进制文件会更大,不是吗?
-
没有。二进制文件仅包括从
main导入(直接或传递)的包。 -
好的,太好了,所以我可以免费包含我所有的测试依赖项等。问题解决了。我什至会保存一个 docker 层
-
@Adrian 没关系,但我找不到我的二进制文件...你知道它在哪里吗?我试过 $GOPATH/bin/golint 但它不在这里 :(
标签: go go-modules