`go install` 添加记录到 `go.mod`
`go install` adds record in `go.mod`
我对 Go 模块如何使用 go install
安装二进制文件感到有点困惑。
我尝试通过执行 go install github.com/joho/godotenv/cmd/godotenv
安装 (https://github.com/joho/godotenv) 二进制文件,我发现它在 go.mod
中添加了一条记录。
我迷路了,因为我们没有在代码中使用这个包,并且在 运行 go mod tidy
之后它被删除了(因为它不是代码)。
有人可以解释一下 go 模块的预期行为吗?
其次,我怎样才能避免将它添加到 go.mod
因为我们只需要安装和执行二进制文件?
谢谢。
转到版本:go version go1.13.4 darwin/amd64
The go command automatically updates go.mod each time it uses the module graph, to make sure go.mod always accurately reflects reality and is properly formatted.
go 工具将在执行构建时检测到依赖项不准确时自动更新 go.mod
。
当您从模块安装 github.com/joho/godotenv/cmd/godotenv
时,此安装至少需要构建/安装有问题的包(以及它的依赖项,可传递)。
您可以安全地运行 go mod tidy
撤消此 "one-time" 依赖项的记录。
一般来说,如果你想禁止 go 工具更新 go.mod
文件,你可以使用 -mod=readonly
标志,但那样会失败 go install
("can't load package: package xxx: import lookup disabled by -mod=readonly")。您可以在此处阅读更多相关信息:Go Wiki: Go modules: Can I control when go.mod gets updated and when the go tools use the network to satisfy dependencies?
或者,如果您想避免这种情况,请在您的模块之外构建/安装您的工具。您可以为此使用 "dummy" 模块。
我对 Go 模块如何使用 go install
安装二进制文件感到有点困惑。
我尝试通过执行 go install github.com/joho/godotenv/cmd/godotenv
安装 (https://github.com/joho/godotenv) 二进制文件,我发现它在 go.mod
中添加了一条记录。
我迷路了,因为我们没有在代码中使用这个包,并且在 运行 go mod tidy
之后它被删除了(因为它不是代码)。
有人可以解释一下 go 模块的预期行为吗?
其次,我怎样才能避免将它添加到 go.mod
因为我们只需要安装和执行二进制文件?
谢谢。
转到版本:go version go1.13.4 darwin/amd64
The go command automatically updates go.mod each time it uses the module graph, to make sure go.mod always accurately reflects reality and is properly formatted.
go 工具将在执行构建时检测到依赖项不准确时自动更新 go.mod
。
当您从模块安装 github.com/joho/godotenv/cmd/godotenv
时,此安装至少需要构建/安装有问题的包(以及它的依赖项,可传递)。
您可以安全地运行 go mod tidy
撤消此 "one-time" 依赖项的记录。
一般来说,如果你想禁止 go 工具更新 go.mod
文件,你可以使用 -mod=readonly
标志,但那样会失败 go install
("can't load package: package xxx: import lookup disabled by -mod=readonly")。您可以在此处阅读更多相关信息:Go Wiki: Go modules: Can I control when go.mod gets updated and when the go tools use the network to satisfy dependencies?
或者,如果您想避免这种情况,请在您的模块之外构建/安装您的工具。您可以为此使用 "dummy" 模块。