【发布时间】:2021-10-05 07:46:27
【问题描述】:
这里还是 Go 的新开发者。 我想知道使用 go mod 和 go get 的最佳实践是什么。 我有 go.mod 文件,仅包含与运行生产构建相关的模块。 在流水线期间,我确实想运行一些代码质量检查,例如 go vet/lint 和其他测试。
要运行它,我需要获取一些额外的模块。但是一旦我这样做了,我的 go.mod 会更新,但 vendor/modules.txt 不会更新,这会产生一些问题。
我看到了 2 个解决方案,但似乎都不正确:
1-我在 go get 之后运行了一个 go mod vendor,这将更新我需要的所有文件。不是特别烦人,但我觉得很奇怪必须调用两个不同的命令来更新我的模块。
2-默认情况下,我将 linting/tests 和其他检查所需的模块放入我的 go.mod 文件中。但这对我来说听起来很奇怪,生产构建不需要 linting 模块,我不应该发布它们。
我是不是想太多了,我应该选择 2 吗?还是这里有其他好的做法?
【问题讨论】:
-
我不确定我是否了解这里的情况。
go get基本上是现在编辑go.mod的工具。如果您有测试的依赖项不在go.mod中,则应将它们添加到其中。 -
如果您实质上是在询问如何在不修改
go.mod的情况下安装二进制文件,则不推荐使用go get,您应该使用go install。
标签: go