使用未设置 GOPATH 的模块时,go 将导入放在哪里?
Where does go put imports when using modules with no GOPATH set?
我正在尝试将工作中的项目转换为模块。我的理解是它应该使部署更容易,因为不必正确设置 $GOPATH。
在我现有的项目中,我 运行 go mod init <project path>
,并签入了 go.mod
和 go.sum
。作为测试,我打开了一个新终端,unset GOPATH
,将我的项目克隆到 /tmp,go build
,一切都很好,但它给我留下了疑问。我希望将我的导入内容下载到供应商文件夹中,但什么也没有。
当没有设置 $GOPATH 时,go modules 将它必须 go get
的包放在哪里?
来自modules help:
When using modules, GOPATH is no longer used for resolving imports. However, it is still used to store downloaded source code (in GOPATH/pkg/mod) and compiled commands (in GOPATH/bin).
因此在您的情况下,如果未设置 GOPATH,它将使用默认的 GOPATH ($HOME/go/
),从而将缓存的导入存储在:$HOME/go/pkg/mod
我正在尝试将工作中的项目转换为模块。我的理解是它应该使部署更容易,因为不必正确设置 $GOPATH。
在我现有的项目中,我 运行 go mod init <project path>
,并签入了 go.mod
和 go.sum
。作为测试,我打开了一个新终端,unset GOPATH
,将我的项目克隆到 /tmp,go build
,一切都很好,但它给我留下了疑问。我希望将我的导入内容下载到供应商文件夹中,但什么也没有。
当没有设置 $GOPATH 时,go modules 将它必须 go get
的包放在哪里?
来自modules help:
When using modules, GOPATH is no longer used for resolving imports. However, it is still used to store downloaded source code (in GOPATH/pkg/mod) and compiled commands (in GOPATH/bin).
因此在您的情况下,如果未设置 GOPATH,它将使用默认的 GOPATH ($HOME/go/
),从而将缓存的导入存储在:$HOME/go/pkg/mod