Go Module 未來的趨勢
Go Modules介紹
Modules是Go 1.11中新增的實驗性功能,基於vgo演變而來,是一個新型的包管理工具。
GO111MODULE
要使用go module,首先要設定GO111MODULE=on
GO111MODULE=off,go命令列將不會支援module功能,尋找依賴包的方式將會沿用舊版本那種通過vendor目錄或者GOPATH模式來查詢。
GO111MODULE=on,go命令列會使用modules,而一點也不會去GOPATH目錄下查詢。
GO111MODULE=auto,預設值,go命令列將會根據當前目錄來決定是否啟用module功能。這種情況下可以分為兩種情形:當前目錄在GOPATH/src之外且該目錄包含go.mod檔案,或者當前檔案在包含go.mod檔案的目錄下面。
在Go 1.11-1.12 預設都是auto,據可靠訊息說1.13要修改為預設啟動。
Go module 命令
downloaddownload modules to local cache (下載依賴的module到本地cache))
editedit go.mod from tools or scripts (編輯go.mod檔案)
graphprint module requirement graph (列印模組依賴圖))
initinitialize new module in current directory (再當前資料夾下初始化一個新的module, 建立go.mod檔案))
tidyadd missing and remove unused modules (增加丟失的module,去掉未用的module)
vendormake vendored copy of dependencies (將依賴複製到vendor下)
verifyverify dependencies have expected content (校驗依賴)
whyexplain why packages or modules are needed (解釋為什麼需要依賴)
替換
replace (golang.org/x/crypto v0.0.0-20180820150726-614d502a4dac => github.com/golang/crypto v0.0.0-20180820150726-614d502a4dacgolang.org/x/net v0.0.0-20180821023952-922f4815f713 => github.com/golang/net v0.0.0-20180826012351-8a410e7b638dgolang.org/x/text v0.3.0 => github.com/golang/text v0.3.0)
go get 升級
執行 go get -u 將會升級到最新的次要版本或者修訂版本(x.y.z, z是修訂版本號, y是次要版本號)
執行 go get -u=patch 將會升級到最新的修訂版本
執行 go get package@version 將會升級到指定的版本號version