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

依赖管理这一路

最开始选择使用 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目录下的依赖包同步到当前项目目录中。

    原文作者:chunice
    原文地址: https://segmentfault.com/a/1190000015970963
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞