Go的包管理工具(二):glide

栏目: IOS · Android · 发布时间: 5年前

在上一篇文章中介绍了 Go 的环境配置和包管理的几种方式。Go 的包管理是一直是为人诟病之处,从 Go 1.5 引入的 vendor 机制、准官方工具dep,到 Go 1.5 的 go modules,目前为止还没一个简便的解决方案。本文将会介绍 glide

glide 是在 vendor 之后出来的。glide 的依赖包信息在 glide.yaml 和 glide.lock 中,前者记录了所有依赖的包,后者记录了依赖包的版本信息

工作原理

Glide 扫描应用程序或库的源代码以确定所需的依赖项。要确定版本和位置(例如forks的别名),Glide会使用规则读取 glide.yaml 文件。有了这些信息,Glide将检索所需的依赖项。

遇到依赖包时,会扫描其导入以确定依赖关系的依赖关系(传递依赖关系)。如果依赖项目包含 glide.yaml 文件,则该信息用于帮助确定从要使用的位置或版本获取时的依赖关系规则。还会导入 Godep,GB,GOM 和GPM 的配置。依赖项将导出到 verdor。生成的 glide.lock 文件,包含所有依赖项,包括传递依赖项。

安装 glide

可以通过脚本安装:

curl https://glide.sh/get | sh

执行之后,将会安装最新的 release 版本。在 Mac 上,还可以通过 brew install glide 安装。

$ glide -v
glide version v0.13.2

0.13.2 是当前最新的版本。

初始化 glide

首先需要进入 GOPATH 中的项目,

cd $GOPATH/src/go-web-practice

初始化

$ glide create
[INFO]	Generating a YAML configuration file and guessing the dependencies
[INFO]	Attempting to import from other package managers (use --skip-import to skip)
[INFO]	Scanning code to look for dependencies
[INFO]	--> Found reference to github.com/Masterminds/semver
[INFO]	--> Found reference to github.com/Masterminds/vcs
[INFO]	--> Found reference to github.com/codegangsta/cli
[INFO]	--> Found reference to gopkg.in/yaml.v2
[INFO]	Writing configuration file (glide.yaml)
[INFO]	Would you like Glide to help you find ways to improve your glide.yaml configuration?
[INFO]	If you want to revisit this step you can use the config-wizard command at any time.
[INFO]	Yes (Y) or No (N)?
n
[INFO]	You can now edit the glide.yaml file. Consider:
[INFO]	--> Using versions and ranges. See https://glide.sh/docs/versions/
[INFO]	--> Adding additional metadata. See https://glide.sh/docs/glide.yaml/
[INFO]	--> Running the config-wizard command to improve the versions in your configuration

执行初始化, glide.yaml 记载了依赖包的列表及其更新规则,每次执行 glide up 时,都会按照指定的规则下载新版。如下笔者示例创建的 glide.yaml

package: go-web-practice
import:
- package: github.com/astaxie/beego
  version: 1.8.0
- package: github.com/coocood/freecache
- package: github.com/garyburd/redigo
  subpackages:
  - redis
- package: github.com/go-sql-driver/mysql
- package: github.com/bitly/go-simplejson
- package: github.com/orcaman/concurrent-map
- package: golang.org/x/crypto
testImport:
- package: github.com/smartystreets/goconvey
  subpackages:
  - convey

项目的结构

- $GOPATH/src/myProject
  |
  |-- glide.yaml
  |
  |-- glide.lock
  |
  |-- main.go
  |
  |-- mySubpackage
  |    |
  |    |-- foo.go
  |
  |-- vendor
       |-- github.com
            |
            |-- Masterminds
                  |
                  |-- ... etc.

安装依赖

glide install

如上的命令将安装 glide.lock 文件中列出的版本,跳过扫描,除非 glide.lock 文件找不到,它将会执行更新。

直接下载依赖

glide get

除了自动从代码中解析 import 外,glide 还可以通过 glide get 直接下载代码中没有的依赖,与 go get 的用法基本一致。

升级依赖

glide up

glide 会按照语义化版本规则更新依赖包代码,开发过程中如果需要使用新版代码,可以执行这个命令。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

iOS面试之道

iOS面试之道

故胤道长、唐巧 / 电子工业出版社 / 2018-7 / 59.00元

《iOS面试之道》是作者将多年的工作经验和积累,结合具体面试内容总结而成的。 《iOS面试之道》共分为3部分。第1部分为面试准备,详细介绍求职中遇到的基本问题,作者根据其多年的经验,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。第2部分为算法知识。算法几乎是各种水平的程序员都要面对的考查内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身......一起来看看 《iOS面试之道》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具