Golang的包管理亂得不行,各種工具橫空出世,各顯神通啊。用了幾個下來,發現 Glide 是比較好用的,使用了 vender 來進行管理,多個開發環境的版本不衝突,功能強大,配置文件也足夠簡單。初始化一個已有的工程想要引入glide進行管理→ glide create這時,Glide會掃描工程中所... ...
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 一樣
在上面中,比較重要常用的是 import
,ignore
,excludeDirs
這三個。下麵詳細說一下。
import
import 表示了 要導入的包列表,示例的配置方法,看下麵:
import:
- package: github.com/Masterminds/vcs
version: ^1.2.0
repo: [email protected]: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: [email protected]
homepage: http://technosophos.com
- name: Matt Farina
email: [email protected]
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: [email protected]: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),請勿用於任何商業用途!
關註微信公眾號,獲取新文章的推送!