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


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

查看所有标签

猜你喜欢:

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

数据之巅

数据之巅

涂子沛 / 中信出版社 / 2014-5-1 / 65.00元

《数据之巅:大数据革命,历史、现实与未来》从美国建国之基讲起,通过阐述初数时代、内战时代、镀金时代、进步时代、抽样时代、大数据时代的特征,系统梳理了美国数据文化的形成,阐述了其数据治国之道,论述了中国数据文化的薄弱之处,展望了未来数据世界的远景。 “尊重事实,用数据说话”,“推崇知识和理性,用数据创新”,作者不仅意在传承黄仁宇“数目字”管理的薪火,还试图把数据这个科技符号在中国转变为文化符号......一起来看看 《数据之巅》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具