如何全局安装golang工具,然后在不同GOPATH的多个项目中使用它们?

Nit*_*hin 5 go

大多数 golang 工具(如 golint、gopkgs 等)都像库一样安装,go get例如,go get -v github.com/golang/lint/golintgo get -v github.com/tpng/gopkgs. 我想知道为什么这些不仅仅是运行源代码的二进制文件,例如go fmt

由于我同时处理多个 Go 项目,因此我更喜欢对不同GOPATH的项目使用不同的工具,因此我必须将这些工具安装到每个项目中,以便我可以检查或自动完成。

我是否做错了什么,或者有没有办法在全球范围内安装这些工具,然后在多个项目中使用它们?处理多个项目的人们如何管理这个?

编辑:

我不是在询问库的供应或同时使用不同版本的 Go 的项目。我的问题是必须将 lint 和 gopkgs 这样的工具安装到每个 GOPATH 中,为什么它们被设计为像库一样对待,而不是作为全局二进制文件提供,go fmt然后可以在多个项目中使用,就像我们使用go fmt

Von*_*onC 6

所以我必须将这些工具安装到每个项目中,以便我可以检查或自动完成。

不,您不会:了解 Visual Studio Code 如何通过其Microsoftvscode-go插件实现这一点(自 2017 年 1 月的 0.6.53 版本起)。

新设置go.toolsGopath,用于提供备用位置来安装扩展所依赖的所有 Go 工具(如果您不希望它们弄乱您的GOPATH.
参见PR 351PR 737

安装在该通用 `` 文件夹中的工具包括:

'gocode': 'github.com/nsf/gocode',
'gopkgs': 'github.com/tpng/gopkgs',
'go-outline': 'github.com/ramya-rao-a/go-outline',
'go-symbols': 'github.com/acroca/go-symbols',
'guru': 'golang.org/x/tools/cmd/guru',
'gorename': 'golang.org/x/tools/cmd/gorename',
'gomodifytags': 'github.com/fatih/gomodifytags',
'impl': 'github.com/josharian/impl'
Run Code Online (Sandbox Code Playgroud)

(还有其他一些,围绕godocgoimportsgoreturnsdlv、 ...),

这意味着您的GOPATH组成包括:

  • 您的项目特定工作区文件夹
  • go.toolsGopath专用于所有项目使用的工具的全局工作区文件夹。这些工具在后一个工作区的子文件夹
    中安装/更新。bin/

您也可以手动执行此操作(无需 Visual Studio Code):GOPATH只要您想要安装/更新工具,只需设置为该全局工具文件夹即可。

然后重置GOPATHmy/project/dedicated/workspace;/tools/workspace,并将两个子bin/文件夹添加到您的$PATH/ %PATH%

OP Nithin在评论中补充道:

这些工具可以编译为二进制文件,如果这些二进制文件在大多数编辑器中可用$PATH,据我测试(基于您的帖子),vscode 和atom(go-plus)都可以工作并且不会go get再次使用。

如果将它们视为库,则更新会更容易。(我是说go get