我正在考虑将工作中的项目转换为模块。我的理解是,它应该使部署变得更加容易,因为$GOPATH不必正确设置。
在我现有的项目中,我运行了go mod init <project path>
,并签入了go.mod
和go.sum
。作为测试,我打开了一个新的终端,unset GOPATH
,将我的项目克隆到/tmp,go build
中,一切都很好,但它给我留下了问题。我希望我的导入被下载到供应商文件夹中,但没有下载。
当没有设置$GOPATH时,go 模块将它必须go get
的包放在哪里?
从模块帮助:
使用模块时,不再使用 GOPATH 解析导入。但是,它仍然用于存储下载的源代码(在GOPATH/pkg/mod中(和编译的命令(在GOPATH/bin中(。
因此,在您的情况下,如果未设置 GOPATH,它将使用默认的 GOPATH ($HOME/go/
(,从而将缓存的导入存储在:$HOME/go/pkg/mod