文档章节

glide

漂泊尘埃
 漂泊尘埃
发布于 2017/04/21 17:48
字数 1885
阅读 152
收藏 0

glide

项目地址

下面多是从 github 的 readme 中翻译的。

原理

扫描项目或库的源码来检测需要的依赖。为了检测版本和位置,Glide需要一个glide.yaml文件。 依赖的包会统计imports来扫描它的依赖。如果依赖的项目也包含glide.yaml文件,将使用该文件帮助检测依赖规则。Godep, GB, GOM, GPM的配置也导进来了。 依赖会被导出到vendor/目录,这样go工具能够找到并使用它们。 glide.lock文件中包含所有的依赖,包括依赖的依赖。 glide init命令用来设置一个新项目。glide update通过扫描和规则重新生成依赖版本。glide install会安装列举在glide.lock中的版本而不进行扫描,除非glide.lock文件没找到。

安装

在 Mac 或者 Linux 上最简单的安装最新版的脚本是:

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

在 Mac 上也可以通过 Homebrew 安装:

$ brew install glide

在 Ubuntu Precise(12.04), Trusty (14.04), Wily (15.10) 或 Xenial (16.04) 上:

sudo add-apt-repository ppa:masterminds/glide && sudo apt-get update
sudo apt-get install glide

二进制包 适用于 Mac, Linux, Windows。

开发版通过 go get github.com/Masterminds/glide 获得源码。

使用

$ glide create                            # Start a new workspace
$ open glide.yaml                         # and edit away!
$ glide get github.com/Masterminds/cookoo # Get a package and add to glide.yaml
$ glide install                           # Install packages and dependencies
# work, work, work
$ go build                                # Go tools work normally
$ glide up                                # Update to newest versions of the package

glide create(又名init)

初始化一个新的工作区。创建一个glide.yaml文件并写入猜测的包和版本。例如,如果你的项目用的是Godep,那就用Godep指定的版本。Glide足够聪明,能够扫描你的代码库并检测导入的包,不管你是不是用其他包管理工具指定的。

$ 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

这里说的 config-wizard(配置向导)可以现在运行,也可以以后运行,它能帮助你指出你可以使用的依赖包的版本范围。

glide config-wizard

这个命令运行一个向导,它会扫描你的依赖并从中检索信息,提出建议,你可以交互式的选择。例如,它可以发现一个依赖包使用了语义版本,你可以选择要使用的版本范围。

glide get [package name]

你可以通过 glide get 下载一个或多个包到你的 vendor 目录,并添加到你的 glide.yaml 文件中:

glide get github.com/Masterminds/cookoo

这个命令会深入列出的包并通过Godep, GPM, Gom, 和 GB 的配置文件获取它的依赖。 可以在get时指定版本或分支或版本范围:

glide get github.com/a/b#master
glide get github.com/a/b#^1.2.3

关于版本号的说明可以参考:https://glide.readthedocs.io/en/latest/versions/

glide update(又名up)

下载或更新所有列在 glide.yaml 文件中的库,并放到 vendor 目录下。它会递归遍历依赖的包并拉取所需要的和从配置中读取的任何东西。

$ glide up

它会递归遍历其他包,从中寻找使用Glide, Godep, gb, gom, 和 GPM 管理的其他项目,一旦找到,这些包将会按需安装。 当依赖使用了特定的版本时, glide.lock 文件会被创建或更新。例如,如果在 glide.yaml 中一个版本号使用的是一个范围(比如 ^1.2.3),那么在 glide.lock 中就会被设置为特定的 commit id。这允许可重现的安装(见 glide install)。 从拉取的包中移除任何递归的 vendor 目录的话见 -v 标记。

glide install

当你想从 glide.lock 文件中安装指定版本时,使用 glide install

$ glide install

这会读取 glide.lock 文件,然后安装 commit id 指定的版本。 当 glide.lockglide.yaml 不同步时,比如有一个更改,这个命令会发出警告。 更改依赖树时,运行 glide up 会重建 glide.lock 文件。 如果没有 glide.lock 文件,那么 glide install 会表现的像 update,生成一个 lock 文件。 从拉取的包中移除任何递归的 vendor 目录的话见 -v 标记。

glide novendor (别名 nv)

当你运行 go test ./... 这样的命令时它会遍历所有的子目录包括 vendor。你可能只想测试你自己的项目,而不是依赖的项目。这就是 novendor 的意义所在,它可以列举出除了 vendor 的其他所有目录。

$ go test $(glide novendor)

这个命令可以在你项目的所有目录上运行 go test 除了 vendor 目录。

glide name

当你使用glide进行脚本编程时,有种场景是你需要知道你工作的包的名称。glide name 返回列举在 glide.yaml中的包名。

glide tree

Glide 中包含一些检查代码并给出导入详情的命令,glide tree 就是其中之一,运行它给出的数据像这样:

$ glide tree
github.com/Masterminds/glide
	github.com/Masterminds/cookoo   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/cookoo)
		github.com/Masterminds/cookoo/io   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/cookoo/io)
	github.com/Masterminds/glide/cmd   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/cmd)
		github.com/Masterminds/cookoo   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/cookoo)
			github.com/Masterminds/cookoo/io   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/cookoo/io)
		github.com/Masterminds/glide/gb   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/gb)
		github.com/Masterminds/glide/util   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/util)
			github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
		github.com/Masterminds/glide/yaml   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/yaml)
			github.com/Masterminds/glide/util   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/util)
				github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
			github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
			gopkg.in/yaml.v2   (/Users/mfarina/Code/go/src/gopkg.in/yaml.v2)
		github.com/Masterminds/semver   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/semver)
		github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
		github.com/codegangsta/cli   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/codegangsta/cli)
	github.com/codegangsta/cli   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/codegangsta/cli)
	github.com/Masterminds/cookoo   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/cookoo)
		github.com/Masterminds/cookoo/io   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/cookoo/io)
	github.com/Masterminds/glide/gb   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/gb)
	github.com/Masterminds/glide/util   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/util)
		github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
	github.com/Masterminds/glide/yaml   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/yaml)
		github.com/Masterminds/glide/util   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/util)
			github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
		github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
		gopkg.in/yaml.v2   (/Users/mfarina/Code/go/src/gopkg.in/yaml.v2)
	github.com/Masterminds/semver   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/semver)
	github.com/Masterminds/vcs   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/Masterminds/vcs)
	github.com/codegangsta/cli   (/Users/mfarina/Code/go/src/github.com/Masterminds/glide/vendor/github.com/codegangsta/cli)

它展示了一颗导入树,不包括核心库。 这个命令被废弃了,不久会删除

glide list

这个命令会展示项目导入的所有包的列表,以字母顺序。

$ glide list
INSTALLED packages:
	vendor/github.com/Masterminds/cookoo
	vendor/github.com/Masterminds/cookoo/fmt
	vendor/github.com/Masterminds/cookoo/io
	vendor/github.com/Masterminds/cookoo/web
	vendor/github.com/Masterminds/semver
	vendor/github.com/Masterminds/vcs
	vendor/github.com/codegangsta/cli
	vendor/gopkg.in/yaml.v2

glide help

打印帮助信息。

$ glide help

glide --version

打印版本信息。

$ glide --version
glide version 0.12.0

glide.yaml

详细文档见 https://glide.sh/docs/glide.yaml

© 著作权归作者所有

上一篇: API blueprint说明书
下一篇: Go笔记-类型
漂泊尘埃

漂泊尘埃

粉丝 6
博文 37
码字总数 74785
作品 0
朝阳
私信 提问
图片加载框架Glide

本人之前就是网络加载图片各种费劲,而且还有另开线程,非常麻烦,代码量多且复杂,后来接触到图片加载框架Glide,发现太好用了,支持各种格式还有GIF,支持本地和网络等加载,只要几行代码,...

请叫我Mr-He
2016/11/11
76
0
Golang依赖关联工具:glide从入门到精通使用

介绍 不论是开发Java还是你正在学习的Golang,都会遇到依赖管理问题。Java有牛逼轰轰的Maven和Gradle。 Golang亦有godep、govendor、glide、gvt、gopack等等,本文主要给大家介绍gilde。 gl...

梦朝思夕
2017/07/19
0
0
glide 下载golang.org包问题

今天编译Uber的Aresgo。依赖管理用 glide,下载golang.org 包的时候遇到问题。 方法一: 设置 glide mirror glide mirror set https://golang.org/x/mobile https://github.com/golang/mobi...

shengjuntu
03/21
0
0
Golang包管理工具之glide的使用

1. glide简介 是一个golang项目的包管理工具,非常方便快捷,一般只需要2-3个命令就可以将go依赖包自动下载并归档到的目录中。官网参考:https://glide.sh/ 2. glide安装 3. glide使用 4. g...

huwh_
2018/01/14
0
0
Android图片加载框架最全解析(六),探究Glide的自定义模块功能

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/72866313 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注,每天都有文章更新。 不知...

sinyu890807
2017/10/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

利用mybatis generator生成实体类、Mapper接口以及对应的XML文件

项目中通常会遇到数据的持久化,如果是采用mybatis的orm,就会涉及到生成xml的问题,刚好mybatis官网提供了这么个插件MyBatis Generator,效果简直是棒呆。 1. 首先需要在build.gradle文件中...

啊哈关关
今天
2
0
SpringSocial相关的知识点

使用SprigSocial开发第三方登录 核心类 ServiceProvider(AbstractOauth2ServiceProvider):主要负责实现server提供商(例如QQ,微信等共有的东西),默认实现类是AbstractOauth2ServiceProvider...

chendom
今天
2
0
Java并发之AQS详解

一、概述   谈到并发,不得不谈ReentrantLock;而谈到ReentrantLock,不得不谈AbstractQueuedSynchronizer(AQS)!   类如其名,抽象的队列式的同步器,AQS定义了一套多线程访问共享资源...

群星纪元
昨天
2
0
Fabric-sdk-java最新教程

Fabric Java SDK是Fabric区块链官方提供的用于Java应用开发的SDK,全称为Fabric-sdk-java,网上可用资料不多,本文列出了精心整理的针对Fabric Java SDK的最新精选教程。 如果希望快速掌握F...

汇智网教程
昨天
3
0
react 子组件监听props 变化

componentWillReceiveProps //已经被废弃 getDerivedStateFromProps// 推荐使用//如果条件不存在必须要返回null static getDerivedStateFromProps(props, current_stat...

一箭落旄头
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部