Go Module與 Go get 常用參數說明
在 Go 語言結構,可以透過 import
Go Module
Go module 可以在任意的位置進行模組管理,目前
描述 | |
---|---|
GO111MODULE=on | 支持 module,需要使用 go mod,有 go.mod 才能正常運作 |
GO111MODULE=off | 不支持 module,會從 GOPATH 或 vendor 來尋找。如果不是在 GOPATH 執行 go mod init 則會報錯。 |
GO111MODULE=auto | 會檢查當前目錄是否啟用 go.mod,以及陸續往上層尋找,最後才會從 GOPATH 檢查。 |
當 module 功能開啟, package 存放的位置就會是 $GOPATH/pkg
CVT2HUGO: 來導入 package,在這裡將會說明如何管理 package 經常會使用到的參數,進行說明:
Go Mod init
go module init 的語法如下
go mod init <package name>
Go Mod 常用參數
go.mod 有幾個常用參數:
參數 | 描述 |
---|---|
module | 指定 package name or path |
require | 依賴的 package |
replace | 取代 package 依賴位置 |
exclude | 忽略 package |
例如,如果有些 package 希望使用 local 位置,則可以使用 replace 來達成
use replace mypackage.com/happy/beer => ../beer
Go get 常用參數
通常在使用 go get 管理 package ,常會看到 -u
go get 命令通常也被稱為遠程代碼導入,可以從網路下載及安裝指定的 package 以及相關的依賴代碼,存放在 $GOPATH 的 src 目錄下。
使用 go module 時,go build 使用的 package 則儲存在 $GOPATH/pkg/mod
。
CVT2HUGO: 與沒有使用 -u
的差異到底在哪裡,在這裡機會進行說明。
支持的 VCS 包括 git, mercurial, subversion, bazaar。
這裡是在下載時,可以使用的參數:
參數 | 描述 |
---|---|
-d | 執行下載,但不執行安裝動作。 |
-f | 只有在使用 -u 參數時,才會有效。可以忽略檢查以下載 package 的導入路徑。如果代碼是從其他項目 fork ,就可以採取這樣的做法。 |
-fix | 下載 package 先執行修正在進行編譯安裝。 |
-insecure | 允許使用 http (非安全) 來下載 package,通常是在內部開發環境使用。 |
-t | 下載 package ,在安裝過程同時下載安裝相關依賴代碼包。 |
-u | 強制更新已經下載的 package 以及依賴代碼包。(go get 預設指會不會更新已經下載的package) |
因此,從這裡基本可以了解,可以依照參數的功能決定要怎麼管理本地的 package。