Golang包管理工具Glide,你值得拥有
2017-02-14 00:00
309 查看
“依赖地狱”是每个程序员在成长之路上都会面临的情况,首先我们通过语义化版本来控制软件的版本,然后在我们的项目里通过指定
如:你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2...。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使用旧版本,势必引起未知的问题。所以,你需要意识到包依赖管理的重要性。
<!--more-->
在Go语言中,我比较推荐大家使用Glide作为包管理器。它能够自动识别Godeps的包管理,十足的很方便。本节介绍
这里是一个完整的
这些元素是:
这些还可以组合。
连字符
有多个快捷方式来处理范围,第一个是连字符范围。这些看起来像:
通配符
波浪号
波形(
插入符
插入符号(
本文链接:https://deepzz.com/post/glide-package-management-introduce.html
软件版本来达到控制依赖的目的。
如:你的项目A依赖多个项目B1,B2,B3,而B1,B2,B3又依赖着其它项目C1,C2...。一个项目依赖这多个项目,当项目C1修复BUG版本发生变化,如果A依旧使用旧版本,势必引起未知的问题。所以,你需要意识到包依赖管理的重要性。
<!--more-->
在Go语言中,我比较推荐大家使用Glide作为包管理器。它能够自动识别Godeps的包管理,十足的很方便。本节介绍
glide.yml的语义说明以及
版本指定的格式。
glide.yml文件
glide.yml是 glide 包管理的配置文件。下面我们对
glide.yml的相关元素进行说明。
这里是一个完整的
glide.yml文件:
package: github.com/Masterminds/glide homepage: https://masterminds.github.io/glide license: MIT owners: - name: Matt Butcher email: technosophos@gmail.com homepage: http://technosophos.com - name: Matt Farina email: matt@mattfarina.com homepage: https://www.mattfarina.com ignore: - appengine excludeDirs: - node_modules import: - package: gopkg.in/yaml.v2 - package: github.com/Masterminds/vcs version: ^1.2.0 repo: git@github.com:Masterminds/vcs vcs: git - package: github.com/codegangsta/cli version: f89effe81c1ece9c5b0fda359ebd9cf65f169a51 - package: github.com/Masterminds/semver version: ^1.0.0 testImport: - package: github.com/arschles/assert
这些元素是:
package:顶部的 package 是它所在
GOPATH的位置,glide 将从该位置下开始导包。
homepage:该项目的详情页面。
license:许可证标识,可以是SPDX license字符串或文件路径。
owners:项目的所有者信息,便于接受漏洞信息。
ignore:忽略导入的包,注意是包而不是目录。
excludeDirs:排除扫描依赖的目录。
import:import 的包列表:
package:导入包的名称,必填。软件包名称遵循go工具所用的相同模式。这意味着:1、映射到VCS远程位置的软件包名称以.git,.bzr,.hg或.svn结尾。 例如,example.com/foo/pkg.git/subpkg。2、GitHub, BitBucket, Launchpad, IBM Bluemix Services, and Go on Google Source是特殊情况,不需要 VCS 扩展。
version:可以为semantic version, semantic version range, branch, tag 或者 commit id。
repo:如果包名称不是repo位置或这是一个私人存储库,它可以去这里。 该软件包将从repo签出并放在软件包名称指定的位置。 这允许使用fork。
vcs:要使用的VCS,如git,hg,bzr或svn。仅当无法从名称中检测到类型时才需要。例如,以.git或GitHub结尾的仓库可以被检测为Git。 对于Bitbucket的repo,我们可以联系API来发现类型。
subpackages:在存储库中使用的包的记录。这不包括存储库中的所有包,而是包括正在使用的包。
os:用于过滤的操作系统的列表。如果设置它将比较当前运行时操作系统与指定的操作系统,并且只有获取匹配的依赖。如果未设置过滤,则跳过。这些名称与构建标志和GOOS环境变量中使用的名称相同。
arch:用于过滤的体系结构列表。如果设置它将比较当前运行时架构与指定的架构,并且只有在匹配时获取依赖关系。如果未设置过滤,则跳过。名称与构建标志和
GOARCH环境变量中使用的名称相同。
testImport:在导入中未列出的测试中使用的软件包列表。每个包具有与导入下列出的相同的详细信息。
版本和范围
Glide 支持Semantic Versions,SemVer ranges,branches,tags和 commit ids 作为 version.基本
一个简单的范围格式是> 1.2.3。这告诉 Glide 去使用
1.2.3之后的最新版本。它还支持以下操作符:
=:等于(可省略)
!=:不等于
>:大于
<:小于
>=:大于等于
<=:小于等于
这些还可以组合。
,是并且和
||是或者。或运算符会导致对组和运算符进行检查,如:
">= 1.2, < 3.0.0 || >= 4.2.3"。
连字符-
有多个快捷方式来处理范围,第一个是连字符范围。这些看起来像:1.2 - 1.4.5等价于
>= 1.2, <= 1.4.5
2.3.4 - 4.5等价于
>= 2.3.4, <= 4.5
通配符x,X,*
x,
X和
*字符可用作通配符。这适用于所有比较运算符。当在
=运算符上使用时,它会返回到 patch 级别比较(参见下面的波形)。例如:
1.2.x等价于
>= 1.2.0, < 1.3.0
>= 1.2.x等价于
>= 1.2.0
<= 2.x等价于
< 3
*等价与
>= 0.0.0
波浪号~
(Patch)
波形(~)比较运算符用于指定 minor 版本修改的范围,而当缺少 minor 编号时,major 级别更改。例如:
~1.2.3等价于
>= 1.2.3, < 1.3.0
~1等价于
>= 1, < 2
~2.3等价于
>= 2.3, < 2.4
~1.2.x等价于
>= 1.2.0, < 1.3.0
~1.x等价于
>= 1, < 2
插入符^
(Major)
插入符号(^)比较运算符用于 major 级别的更改。当 API 版本的比较作为 major 更改是 API 打破时,这是有用的。例如:
^1.2.3等价于
>= 1.2.3, < 2.0.0
^1.2.x等价于
>= 1.2.0, < 2.0.0
^2.3等价于
>= 2.3, < 3
^2.x等价于
>= 2.0.0, < 3
本文链接:https://deepzz.com/post/glide-package-management-introduce.html
相关文章推荐
- Golang学习--包管理工具glide
- Golang Vendor 包管理工具 glide 使用教程
- Golang包管理工具glide简介
- Golang依赖管理工具:glide从入门到精通使用
- Glide--Golang包版本管理工具
- [golang] Glide 包管理工具,在windows10 64位系统上的bug修复方案
- Golang项目管理实践一--Golang包管理特点以及Glide工具的使用
- Golang依赖管理工具:glide从入门到精通使用
- snagit - 很棒的截图软件(工具),您值得拥有!
- 你值得拥有:25个Linux性能监控工具
- 你值得拥有:25 个 Linux 性能监控工具
- 值得拥有!精心推荐几款超实用的 CSS 开发工具
- 你值得拥有:25 个 Linux 性能监控工具
- 你值得拥有:25个Linux性能监控工具
- Linux值得拥有的性能监控工具
- 你值得拥有 ―― 25 个 Linux 性能监控工具
- 你值得拥有:25 个 Linux 性能监控工具
- Linux值得拥有的性能监控工具
- iOS 独一无二 工具 装机必备:量角器 - 你值得拥有
- 【css样式生成 & 图片合并压缩工具】Sprite,你值得拥有