go 依賴管理利器 -- govendor

來源:互聯網
上載者:User

長期以來,golang 對外部依賴都沒有很好的管理方式,只能從 $GOPATH 下尋找依賴。這就造成不同使用者在安裝同一個項目適合可能從外部擷取到不同的依賴庫版本,同時當無法連網時,無法編譯依賴缺失的項目。

自 1.5 版本開始引入 govendor 工具,該工具將項目依賴的外部包放到項目下的 vendor 目錄下(對比 nodejs 的 node_modules 目錄),並通過 vendor.json 檔案來記錄依賴包的版本,方便使用者使用相對穩定的依賴。

對於 govendor 來說,主要存在三種位置的包:項目自身的包組織為本地(local)包;傳統的存放在 $GOPATH 下的依賴包為外部(external)依賴包;被 govendor 管理的放在 vendor 目錄下的依賴包則為 vendor 包。

具體來看,這些包可能的類型如下:

狀態 縮寫狀態 含義
+local l 當地套件,即項目自身的包組織
+external e 外部包,即被 $GOPATH 管理,但不在 vendor 目錄下
+vendor v 已被 govendor 管理,即在 vendor 目錄下
+std s 標準庫中的包
+unused u 未使用的包,即包在 vendor 目錄下,但項目並沒有用到
+missing m 代碼引用了依賴包,但該包並沒有找到
+program p 主程式包,意味著可以編譯為執行檔案
+outside   外部包和缺失的包
+all   所有的包

常見的命令如下,格式為 govendor COMMAND。

通過指定包類型,可以過濾僅對指定包進行操作。

命令 功能
init 初始化 vendor 目錄
list 列出所有的依賴包
add 添加包到 vendor 目錄,如 govendor add +external 添加所有外部包
add PKG_PATH 添加指定的依賴包到 vendor 目錄
update 從 $GOPATH 更新依賴包到 vendor 目錄
remove 從 vendor 管理中刪除依賴
status 列出所有缺失、到期和修改過的包
fetch 添加或更新包到本地 vendor 目錄
sync 本地存在 vendor.json 時候拉去依賴包,匹配所記錄的版本
get 類似 go get 目錄,拉取依賴包到 vendor 目錄

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.