大多数golang工具(如golint,gopkgs等)都安装得像go get
的库,例如go get -v github.com/golang/lint/golint
或go get -v github.com/tpng/gopkgs
。我想知道为什么这些不仅仅是通过源代码的二进制文件,例如go fmt
?
由于我同时处理多个Go项目,我更喜欢为不同的项目使用不同的GOPATH
,因此我必须将这些工具安装到每个项目中,以便我可以进行lint或自动完成。
我做错了什么或有没有办法全局安装这些工具然后只在多个项目中使用它们?处理多个项目的人如何管理这个?
修改
我不会询问有关图书馆的出售或同时使用不同版本的Go的项目。我的问题是必须在每个GOPATH中安装像lint和gopkgs这样的工具,为什么它们被设计成像库那样被处理,而不是像go fmt
这样的全局二进制文件提供,然后可以在多个项目中使用,就像我们使用go fmt
答案 0 :(得分:2)
所以我不得不将这些工具安装到每个项目中,以便我可以完成或自动完成。
不,你不这样做:看看Visual Studio Code如何通过它的Microsoft vscode-go
插件(从它的0.6.53版本,2017年1月)开始。
新设置
go.toolsGopath
,用于提供备用位置来安装扩展程序所依赖的所有Go工具,如果您不希望它们使GOPATH
混乱。
请参阅PR 351和PR 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'
(以及其他一些人,godoc
,goimports
或goreturns
,dlv
,......),
这意味着您的GOPATH
由以下内容组成:
go.toolsGopath
工作区文件夹
这些工具在后一工作区的bin/
子文件夹中安装/更新。您也可以手动执行此操作(不使用Visual Studio代码):只要您想安装/更新工具,只需将GOPATH
设置为该全局工具文件夹即可。
然后将GOPATH
重置为my/project/dedicated/workspace;/tools/workspace
,并将bin/
个子文件夹添加到$PATH
/ %PATH%
。
这些工具可以编译成二进制文件,如果这些二进制文件在
$PATH
中可用,大多数编辑器,就我测试而言(基于你的帖子),vscode和atom(go-plus)都可以工作,不会再go get
他们。如果将它们视为库,则更容易更新。 (我的意思是
go get
)