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

依赖管理这一路

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

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

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

此次 vgo 并无直接体验,据说 vgo 最后是要合并到 go tool 工具链中的。而且发现会在 go 1.11 版本中在2018年8月发布。因而沉下心,等合并到 go tool 中以后再体验。web

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

安装 golang beta 版

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

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文件。若是发现了这个文件,说明已经初始化成功。这个文件由于没有同步依赖关系,因此文件里只有一行,就是项目目录code

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

建立依赖关系

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

go1.11beta3 mod tidy

在往后的开发工做中,直接使用这个命令就能够增删同步依赖关系。get

使用 vendor 文件夹

以上的管理依赖管理操做,因此依赖包仍是在GOPATH/src目录下,go module 固然能够把包直接放在当前项目中管理。

go1.11beta mod vendor

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

相关文章
相关标签/搜索