最開始選擇使用 govendor 做爲項目的依賴管理。緣由是對比了 Godoc 推薦的幾個依賴管理工具,govendor 跟其餘幾個工具相比,目錄最乾淨,只有一個 vendor 文件夾。(並且當時選用的 web 框架 gin 也使用了 govendor)git
後來在同事的推薦下更換了「官方」的 dep,從 govendor 無痛切換爲 dep。項目目錄下多了兩個討厭的 Gopkg.* 文件。以前瞭解的 Go 語言最佳實踐並不包含這種首字母大寫的文件命名方式。可是仍是用了下來,誰讓是「官方」出品呢。(後來瞭解到 dep 是官方社區的產物)github
dep 沒用多久,vgo 就來了。剛瞭解到 vgo 的時候專門去 dep 的 github 瞭解了一下。發現 dep 還在正常開發。對比 vgo 以後發現使用方式和命名方式大相徑庭。(兩個團隊分別的產物,相關八卦能夠自行 Google)。golang
此次 vgo 並無直接體驗,據說 vgo 最後是要合併到 go tool 工具鏈中的。而且發現會在 go 1.11 版本中在2018年8月發佈。因而沉下心,等合併到 go tool 中以後再體驗。web
vgo 和 go1.11beta2 及 go1.11beta3 的使用方式略有不一樣,本文直接以最新的 beta3 版本示例
體驗 golang beta 版本比想象中要容易的多,直接輸入如下命令shell
go get -v golang.org/dl/go1.11beta3 go1.11beta3 download
beta 版本的 go 跟正式版本的 go 互不影響,使用beta版本的時候直接使用命令
go1.11beta3 run **
方式
在使用以前須要開啓gomodules,直接在 $GOPATH/src 目錄下執行如下命令,修改環境變量框架
export GO111MODULE=on
接下來咱們來初始化go modules,來到項目目錄下,執行命令工具
go1.11beta3 mod init
執行命令後,會在項目目錄下發現go.mod
文件。若是發現了這個文件,說明已經初始化成功。這個文件由於沒有同步依賴關係,因此文件裏只有一行,就是項目目錄code
若是你的項目以前使用了 dep 或其餘依賴管理工具,那麼在首次使用
go mod
的時候會自動同步依賴關係,並提示從某工具遷移到 go modules。這招果真漂亮,直接從其餘社區工具接管。
執行如下命令會自動分析項目裏的依賴關係同步到go.mod
文件中,同時建立go.sum
文件開發
go1.11beta3 mod tidy
在往後的開發工做中,直接使用這個命令就能夠增刪同步依賴關係。get
以上的管理依賴管理操做,因此依賴包仍是在GOPATH/src
目錄下,go module 固然能夠把包直接放在當前項目中管理。
go1.11beta mod vendor
直接使用這個命令就能夠把GOPATH/src
目錄下的依賴包同步到當前項目目錄中。