33

Go1.11 module 体验(Go 11.1 beta 版)

 5 years ago
source link: https://studygolang.com/articles/14119?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

依赖管理这一路

最开始选择使用 govendor 作为项目的依赖管理。原因是对比了 Godoc 推荐的几个依赖管理工具,govendor 跟其他几个工具相比,目录最干净,只有一个 vendor 文件夹。(而且当时选用的 web 框架 gin 也使用了 govendor)

后来在同事的推荐下更换了“官方”的 dep,从 govendor 无痛切换为 dep。项目目录下多了两个讨厌的 Gopkg.* 文件。之前了解的 Go 语言最佳实践并不包含这种首字母大写的文件命名方式。但是还是用了下来,谁让是“官方”出品呢。(后来了解到 dep 是官方社区的产物)

dep 没用多久,vgo 就来了。刚了解到 vgo 的时候专门去 dep 的 github 了解了一下。发现 dep 还在正常开发。对比 vgo 之后发现使用方式和命名方式截然不同。(两个团队分别的产物,相关八卦可以自行 Google)。

这次 vgo 并没有直接体验,听说 vgo 最后是要合并到 go tool 工具链中的。并且发现会在 go 1.11 版本中在2018年8月发布。于是沉下心,等合并到 go tool 中之后再体验。

vgo 和 go1.11beta2 及 go1.11beta3 的使用方式略有不同,本文直接以最新的 beta3 版本示例

安装 golang beta 版

体验 golang beta 版本比想象中要容易的多,直接输入以下命令

go get -v golang.org/dl/go1.11beta3
go1.11beta3 download

beta 版本的 go 跟正式版本的 go 互不影响,使用beta版本的时候直接使用命令 go1.11beta3 run ** 方式

使用 go modules

在使用之前需要开启gomodules,直接在 $GOPATH/src 目录下执行以下命令,修改环境变量

export GO111MODULE=on

初始化

接下来我们来初始化go modules,来到项目目录下,执行命令

go1.11beta3 mod init

执行命令后,会在项目目录下发现 go.mod 文件。如果发现了这个文件,说明已经初始化成功。这个文件因为没有同步依赖关系,所以文件里只有一行,就是项目目录

如果你的项目之前使用了 dep 或其他依赖管理工具,那么在首次使用 go mod 的时候会自动同步依赖关系,并提示从某工具迁移到 go modules。这招果然漂亮,直接从其他社区工具接管。

创建依赖关系

执行以下命令会自动分析项目里的依赖关系同步到 go.mod 文件中,同时创建 go.sum 文件

go1.11beta3 mod tidy

在日后的开发工作中,直接使用这个命令就可以增删同步依赖关系。

使用 vendor 文件夹

以上的管理依赖管理操作,所以依赖包还是在 GOPATH/src 目录下,go module 当然可以把包直接放在当前项目中管理。

go1.11beta mod vendor

直接使用这个命令就可以把 GOPATH/src 目录下的依赖包同步到当前项目目录中。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK