$GOPATH 目录和磁盘空间
$GOPATH directory and diskspace
在使用 GO 开发一两年后,我查看了我的 $GOPATH 目录大小,惊讶地发现它增长到了 4GB。
我知道磁盘 space 应该很便宜(在这个 128GB 笔记本电脑 SSD 上并没有那么多),但仍然很便宜。
所以我的问题是,是否有一些好的做法来管理 $GOPATH 目录的大小?
从头开始是个好主意吗? (虽然可能会非常耗时)
你的声明,删除 GOPATH
会很耗时,听起来你正在用普通的 go get ...
管理你的 Go 项目的依赖关系。在我的环境中,我做了两件事来使 GOPATH
短暂。
不要使用简单的 go get
进行依赖管理。 Go 1.6 引入了 /vendor
目录。与 Glide 这样的依赖管理工具一起,某个项目的每个依赖项都位于项目目录中。
这意味着,如果不再需要依赖项,您可以擦除项目的 vendor
目录并重新下载依赖项。因此,您只依赖于您实际需要的磁盘。
此外,如果您停止处理某个项目并将其从磁盘中删除,则依赖项也会被删除。
您可以在GOPATH
中指定多个路径。与 PATH
环境变量一样,您可以用冒号分隔它们。有趣的是,Go 使用第一个路径来下载项目。在我的机器上 GOPATH
看起来像 $HOME/.gopath:$HOME/projects
。所以如果你把你所有的实际项目都放在第二个目录中,你将在你的项目和依赖项之间有一个明确的分离。因此,您可以不时擦除第一个目录,但不必担心必须再次克隆每个项目。
这两件事无助于减少您的 Go 项目及其依赖项的磁盘使用,但您可以更好地了解实际需要什么,并使您能够随时删除依赖项目录。
在使用 GO 开发一两年后,我查看了我的 $GOPATH 目录大小,惊讶地发现它增长到了 4GB。
我知道磁盘 space 应该很便宜(在这个 128GB 笔记本电脑 SSD 上并没有那么多),但仍然很便宜。
所以我的问题是,是否有一些好的做法来管理 $GOPATH 目录的大小?
从头开始是个好主意吗? (虽然可能会非常耗时)
你的声明,删除 GOPATH
会很耗时,听起来你正在用普通的 go get ...
管理你的 Go 项目的依赖关系。在我的环境中,我做了两件事来使 GOPATH
短暂。
不要使用简单的
go get
进行依赖管理。 Go 1.6 引入了/vendor
目录。与 Glide 这样的依赖管理工具一起,某个项目的每个依赖项都位于项目目录中。这意味着,如果不再需要依赖项,您可以擦除项目的
vendor
目录并重新下载依赖项。因此,您只依赖于您实际需要的磁盘。此外,如果您停止处理某个项目并将其从磁盘中删除,则依赖项也会被删除。
您可以在
GOPATH
中指定多个路径。与PATH
环境变量一样,您可以用冒号分隔它们。有趣的是,Go 使用第一个路径来下载项目。在我的机器上GOPATH
看起来像$HOME/.gopath:$HOME/projects
。所以如果你把你所有的实际项目都放在第二个目录中,你将在你的项目和依赖项之间有一个明确的分离。因此,您可以不时擦除第一个目录,但不必担心必须再次克隆每个项目。
这两件事无助于减少您的 Go 项目及其依赖项的磁盘使用,但您可以更好地了解实际需要什么,并使您能够随时删除依赖项目录。