Golang包管理工具Glide,你值得擁有

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

“依賴地獄”是每個程式員在成長之路上都會面臨的情況,首先我們通過語義化版本來控制軟體的版本,然後在我們的項目裡通過指定軟體版本來達到控制依賴的目的。

如:你的項目A依賴多重專案B1,B2,B3,而B1,B2,B3又依賴著其它項目C1,C2...。一個項目依賴這多重專案,當項目C1修複BUG版本發生變化,如果A依舊使用舊版本,勢必引起未知的問題。所以,你需要意識到包依賴管理的重要性。

在Go語言中,我比較推薦大家使用Glide作為包管理器。它能夠自動識別Godeps的包管理,十足的很方便。本節介紹glide.yml的語義說明以及版本指定的格式。

glide.yml檔案

glide.yml是 glide 包管理的設定檔。下面我們對glide.yml的相關元素進行說明。

這裡是一個完整的glide.yml檔案:

package: github.com/Masterminds/glidehomepage: https://masterminds.github.io/glidelicense: MITowners:- name: Matt Butcheremail: technosophos@gmail.comhomepage: http://technosophos.com- name: Matt Farinaemail: matt@mattfarina.comhomepage: https://www.mattfarina.comignore:- appengineexcludeDirs:- node_modulesimport:- package: gopkg.in/yaml.v2- package: github.com/Masterminds/vcsversion: ^1.2.0repo:    git@github.com:Masterminds/vcsvcs:    git- package: github.com/codegangsta/cliversion: f89effe81c1ece9c5b0fda359ebd9cf65f169a51- package: github.com/Masterminds/semverversion: ^1.0.0testImport:- 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,*

xX*字元可用作萬用字元。這適用於所有比較子。當在=運算子上使用時,它會返回到 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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.