Go 語言團隊在去年開始開發 Dependency Management Tool 稱作 dep,並且預計明年 2018 推出 1.10 Go 版本時內建,詳細可以參考官方的 roadmap,強者我朋友寫了一篇使用教學,有興趣的朋友可以參考看看,但是本篇會講幾點我目前不打算用 dep 的原因。
dep ensure 預設是抓 $GOPATH 的路徑
dep init 或 dep ensure 預設會先去掃 $GOPATH
底下是否存在您所需要的 Package 原始碼,如果有,預設就會去抓到 vendor 目錄,但是這點對開發者很困擾,在 $GOPATH 底下的專案都不是最新的,有時候自己還會去修改自己開發的 Package,這樣造成開發者還要下一次指令去更新 vendor 套件 (請加上 -update
參數)。
不支援抓 sub package.
其他 Dependency tool 幾乎都有支援抓 sub package,像是 govendor 或 glide
|
|
上面指令只會抓 godotenv 內的 autoload package 原始碼,跟 autoload 無關的一律不抓,但是在 dep 只能能抓 godotenv 全部資料,不支援底下寫法,會直接報錯
|
|
dep 預設抓不相關的檔案到 vendor
dep 預設會抓非 .go 或者是不相關的檔案到 vendor 目錄,像是 .travis.yml
另外也把 _test.go
也一起抓進來,造成整個 venodr 有點肥。相對像是 govendor 只會抓專案會用到的 *.go
或 License
檔案,所以在 vendor 目錄底下相對看起來蠻清楚的。
結論
綜合上面三點,我個人不推薦現在使用 dep,非常不穩定,未來官方還會修正 .json 或 .lock 檔案格式,現在要決定的話,我會等到年底或者是明年初再開始使用,大部份的 Open Source 專案還是都是使用 govendor 或 glide …等相對穩定的工具。我個人推薦 govendor 啦。