Go Module 入門使用
對於Go的版本管理主要用過 glide,下面介紹 Go 1.11 之後官方支援的版本管理工具 mod。
關於 mod 官方給出了三個命令go help mod
、go help modules
、go help module-get
幫助瞭解使用。
設定 GO111MODULE
可以用環境變數GO111MODULE
開啟或關閉模組支援,它有三個可選值:off、on、auto,預設值是 auto。
GO111MODULE=off GO111MODULE=on GO111MODULE=auto
在使用模組的時候,GOPATH 是無意義的,不過它還是會把下載的依賴儲存在 $GOPATH/pkg/mod 中,也會把 go install 的結果放在 $GOPATH/bin 中。
Go Mod 命令
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 (解釋為什麼需要依賴)
Go Mod 使用
建立 go.mod 檔案
在一個新的專案中,需要執行go mod init
來初始化建立檔案go.mod
,go.mod
中會列出所有依賴包的路徑和版本。
module github.com/xfstart07/watcher require ( github.com/apex/log v1.0.0 github.com/fatih/color v1.7.0 // indirect github.com/fsnotify/fsnotify v1.4.7 github.com/go-ini/ini v1.38.2 github.com/go-kit/kit v0.7.0 github.com/go-logfmt/logfmt v0.3.0 // indirect
indirect
表示這個庫是間接引用進來的。
go mod vendor
命令可以在專案中建立vendor
資料夾將依賴包拷貝過來。
go mod download
命令用於將依賴包快取到本地Cache起來。
顯示所有Import庫資訊
go list -m -json all
-json all
Mod Cache 路徑
預設在$GOPATH/pkg
下面:
$GOPATH/pkg/mod
我們來看看一個專案下載下來的檔案形式:
➜mod ls -lh cache/download/github.com/go-kit/kit/@v/ total 3016 -rw-r--r--1 a1staff7B Sep 29 15:37 list -rw-------1 a1staff50B Sep 29 15:37 v0.7.0.info -rw-------1 a1staff29B Sep 29 15:37 v0.7.0.mod -rw-r--r--1 a1staff1.5M Sep 29 15:37 v0.7.0.zip -rw-r--r--1 a1staff47B Sep 29 15:37 v0.7.0.ziphash
可以看出專案庫會對每個版本建立一個資料夾,資料夾下有對於版本的資訊。
資料
- ofollow,noindex" target="_blank">初窺Go module
- Introduction to Go Modules
- https://ieevee.com/tech/2018/...
- https://colobu.com/2018/08/27...
- https://studygolang.com/artic...