govendor 是基於 vendor
機制實作的 Go 套件依賴管理命令列工具。與原生 vendor 無侵入性融合,也支援從其他依賴管理工具遷移,可以很方便的實現同一個套件在不同專案中不同版本、以及無相互侵入的開發和管理。
vendor 特性
在開始的時候,Go 並沒有提供較為妥當的套件管理工具。從 1.5 版本開始提供了 vendor 特性,但需要手動設定環境變數 GO15VENDOREXPERIMENT=1
。
在執行go build
或go run
指令時,會依照下列順序去尋找套件:
- 目前套件下的vendor目錄
- 向上級目錄查找,直到找到src 下的vendor 目錄
- 在GOROOT 目錄下查找
- 在GOPATH 下面查找依賴套件
#在發布1.6 版本時,該環境變數的值已經預設為1 了,該值可以使用go env
指令查看。
在發布 1.7 版本時,已去掉該環境變量,預設為開啟 vendor
特性。
vendor 使用建議
- 一個函式庫工程(不包含
main
的package
)不應該在自己的版本控制中儲存外部的套件在vendor
目錄中,除非有特殊原因並且知道為什麼要這麼做。 -
在一個應用程式中,(包含
main
的package
),建議只有一個vendor
目錄,且在程式碼庫一級目錄。相關教學:go影片教學
govendor 簡介
govendor 是基於vendor
目錄機制的套件管理工具。
- 支援從專案原始碼中分析出依賴的包,並從
$GOPATH
複製到專案的vendor
目錄下 - 支持套件的指定版本,並以
vendor/vendor.json
進行套件和版本管理,這點與PHP 的Composer
類似 - 支援用
govendor add/ update
指令從$GOPATH
複製依賴套件 - 如果忽略了
vendor/*/
文件,可用govendor sync
復原依賴套件 - 可直接用
govendor fetch
新增或更新依賴套件 - #可用
govendor migrate
從其他vendor
套件管理工具中一鍵遷移到govendor
- 支援Linux,macOS,Windows,甚至現有所有作業系統
- 支援Git、Hg、SVN,BZR(必須指定路徑)
govendor 使用
要求:
- #專案必須在
$GOPATH/src
目錄下 - #如果Go 版本為1.5,則必須手動設定環境變數
set GO15VENDOREXPERIMENT=1
安裝
go get -u github.com/kardianos/govendor
為了方便快速使用govendor
,建議將$GOPATH/bin
加入PATH 中。 Linux/macOS 如下設定:
export PATH="$GOPATH/bin:$PATH"
初始化
在專案根目錄下執行下列指令進行vendor
初始化:
govendor init
專案根目錄下即會自動產生vendor
目錄和vendor.json
檔案。此時vendor.json
檔案內容為:
{ "comment": "", "ignore": "test", "package": [], "rootPath": "govendor-example" }
常用指令
- 將已被引用且在
$GOPATH
下的所有套件複製到vendor
目錄
govendor add +external
- 僅從
$GOPATH
複製指定套件
govendor add gopkg.in/yaml.v2
- #列出程式碼中所有被引用到的套件及其狀態
govendor list
e github.com/gin-contrib/sse e github.com/gin-gonic/gin e github.com/gin-gonic/gin/binding e github.com/gin-gonic/gin/internal/json e github.com/gin-gonic/gin/render e github.com/golang/protobuf/proto e github.com/mattn/go-isatty e github.com/ugorji/go/codec e gopkg.in/go-playground/validator.v8 e gopkg.in/yaml.v2 pl govendor-example m github.com/json-iterator/go m golang.org/x/sys/unix
- 列出一個套件被哪些套件引用
govendor list -v fmt
s fmt ├── e github.com/gin-contrib/sse ├── e github.com/gin-gonic/gin ├── e github.com/gin-gonic/gin/render ├── e github.com/golang/protobuf/proto ├── e github.com/ugorji/go/codec ├── e gopkg.in/go-playground/validator.v8 ├── e gopkg.in/yaml.v2 └── pl govendor-example
- 從遠端倉庫新增或更新某個套件(不會在
$GOPATH
也存一份)
govendor fetch golang.org/x/net/context
- ##安裝指定版本的套件
govendor fetch golang.org/x/net/context@a4bbce9fcae005b22ae5443f6af064d80a6f5a55 govendor fetch golang.org/x/net/context@v1 # Get latest v1.*.* tag or branch. govendor fetch golang.org/x/net/context@=v1 # Get the tag or branch named "v1".
- 只格式化專案自身程式碼(
- vendor
目錄下的不變動)
govendor fmt +local
- 只建構編譯專案內部的套件
govendor install +local
- 只測試專案內部的測試案例
govendor test +local
- 建構所有
- vendor
套件
#
govendor install +vendor,^program
- 拉取所有依賴的套件到
- vendor
目錄(包括
$GOPATH存在或不存在的套件)
govendor fetch +out
- 套件已在
- vendor
目錄,但想從
$GOPATH更新
govendor update +vendor##已修改了
- $GOPATH
- #裡的某個包,現在想將已修改且未提交的包更新到
vendor
govendor update -uncommitted <updated-package-import-path>
govendor fetch github.com/normal/pkg::github.com/myfork/pkg
此時將從
拉取程式碼,而不是normal
。
- vendor.json
- 中記錄了依賴包信息,該如何拉取更新
govendor sync
govendor 子命令
各子命令詳細用法可透過
govendor COMMAND -h 或閱讀github.com/kardianos/govendor/context
查看原始碼套件如何實現的。 <table>
<thead><tr class="firstRow">
<th align="center">子指令</th>
<th>功能</th>
</tr></thead>
<tbody>
<tr>
<td align="center">#init</td>## 建立<td> vendor<code> 目錄和
vendor.json 檔案
複製套件到專案
vendor 目錄
vendor
目錄
)
目錄
##migrate
#getvendor
目錄
license
意義 | ||
---|---|---|
local | ||
本地包,即專案內部所寫的套件 | external e 外部包,即在 | GOPATH|
目錄 | ## vendor | ##v
|
#已在 | vendor | 目錄下的套件
| std
標準庫裡的套件 | excluded | |
#明確被排除的外部套件 | unused | |
#未使用的套件,即在 | vendor 目錄下,但專案中並未引用到 |
missing |
被引用了但卻找不到的套件 | p |
outside
#相當於狀態為
external missing
all ###所有套件################支援狀態參數的子指令有:###list## #、###add###、###update###、###remove###、###fetch#########Go modules######普大喜奔的是,從Go 1.11 版本開始,官方已內建了更為強大的Go modules 來一統多年來Go 包依賴管理混亂的局面(Go 官方之前推出的dep 工具也幾乎胎死腹中),並且將在1.13版本中正式預設開啟。 ######目前已受到社群的看好和強烈推薦,建議新專案採用 Go modules。 ###
以上是淺談Go套件依賴管理工具govendor的詳細內容。更多資訊請關注PHP中文網其他相關文章!

國產AI黑馬DeepSeek強勢崛起,震撼全球AI界!這家成立僅一年半的中國人工智能公司,憑藉其免費開源的大模型DeepSeek-V3和DeepSeek-R1,在性能上與OpenAI等國際巨頭比肩,甚至在成本控制方面實現了突破性進展,贏得了全球用戶的廣泛讚譽。 DeepSeek-R1現已全面上線,性能媲美OpenAIo1正式版!您可以在網頁端、APP以及API接口體驗其強大的功能。下載方式:支持iOS和安卓系統,用戶可通過應用商店下載;網頁版也已正式開放! DeepSeek網頁版官方入口:ht

DeepSeek:火爆AI遭遇服務器擁堵,如何應對? DeepSeek作為2025年開年爆款AI,免費開源且性能媲美OpenAIo1正式版,其受歡迎程度可見一斑。然而,高並發也帶來了服務器繁忙的問題。本文將分析原因並提供應對策略。 DeepSeek網頁版入口:https://www.deepseek.com/DeepSeek服務器繁忙的原因:高並發訪問:DeepSeek的免費和強大功能吸引了大量用戶同時使用,導致服務器負載過高。網絡攻擊:據悉,DeepSeek對美國金融界造成衝擊,

2025年開年,國產AI“深度求索”(deepseek)驚艷亮相!這款免費開源的AI模型,性能堪比OpenAI的o1正式版,並已在網頁端、APP和API全面上線,支持iOS、安卓和網頁版多端同步使用。深度求索deepseek官網及使用指南:官網地址:https://www.deepseek.com/網頁版使用步驟:點擊上方鏈接進入deepseek官網。點擊首頁的“開始對話”按鈕。首次使用需進行手機驗證碼登錄。登錄後即可進入對話界面。 deepseek功能強大,可進行代碼編寫、文件讀取、創

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具