Glide Golang包管理

Golang的包管理乱得不行,各种工具横空出世,各显神通啊。用了几个下来,发现 Glide 是比较好用的,使用了 vender 来进行管理,多个开发环境的版本不冲突,功能强大,配置文件也足够简单。

初始化

一个已有的工程想要引入glide进行管理

→ glide create

这时,Glide会扫描工程中所有的文件并分析出依赖关系,然后提供选项是跟踪 Minor 还是跟踪 Patch 等选项。最后,Glide 会生成一个基础的配置文件 glide.yaml

内容在我的测试工程中,如下:

package: reposkeeper.net/awesomeTestProject
import:
- package: golang.org/x/net
- package: google.golang.org/grpc
  version: ^1.9.2

配置文件解析

Glide 使用 yaml 作为配置文件的格式。顶层的可配置的有下面几个选项:

  • package 表示了 此工程在 GOPATH 的位置
  • homepage 表示了 此工程的详情页面
  • license 表示了 工程采用的 license
  • owners 表示了 项目的所有者,可以填多人
  • ignore 表示了 导入时,忽略的包(这个在实际使用中比较常用,用于忽略掉一些不符合包管理规则的包)
  • excludeDirs 表示了 Glide 在扫描时忽略的目录
  • import 表示了 依赖的包列表
  • testImport 表示了 测试中的依赖包,其格式同 import 一样

在上面中,比较重要常用的是 importignoreexcludeDirs 这三个。下面详细说一下。

import

import 表示了 要导入的包列表,示例的配置方法,看下面:

import:
  - package: github.com/Masterminds/vcs
    version: ^1.2.0
    repo:    git@github.com:Masterminds/vcs
    vcs:     git
  - package: golang.org/x/net
    subpackages:
    - context
  • package 表示要导入的包 的名称
  • version 表示了包的版本,可以是 版本、版本范围、分支、tag、commit id
  • repo 如果包名称不是一个仓库地址或者是属于私人仓库,Glide 会在这里将包取出
  • vcs 表示了使用的vcs,如:git、hg、svn等
  • os 可以指定过滤特定的 操作系统,内容和 GOOS 一样
  • arch 可以指定过滤特定的 架构体系,内容和 GOARCH 一样
  • subpackages 表示只导入一个仓库中被使用的包

完整配置示例

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

常用操作

  • glide get [package name] 将一个包下载到工程的vendor下,并写入配置文件中
  • glide up 升级所有的包
  • glide install 安装所有的依赖包

END

配置和操作都比较简单,在日常使用起来,总会遇到包被墙掉的问题。不过作为技术人员,科学上网是基础能力,配一个proxy就可以了。


转载请注明作者和出处(reposkeeper),请勿用于任何商业用途!

关注微信公众号,获取新文章的推送!
Glide Golang包管理

相关推荐