【问题标题】:go get: disabled by -mod=vendorgo get: 被 -mod=vendor 禁用
【发布时间】: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


【解决方案1】:

go get 保持依赖项要求之间的一致性,并使用源文件中的import 语句图来确定要更新哪些包。

所以go get -u 必须至少为您的依赖项下载go.mod 文件,以及所请求包的源代码和升级的依赖项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2020-08-15
    • 2021-05-27
    • 2014-09-06
    • 1970-01-01
    相关资源
    最近更新 更多