好文
GO111MODULE
mod
模式是否開啓由環境變量GO111MODULE
決定,GO111MODULE 環境變量有三個值:on,auto(默認值),off
。
on
:強制開啓mod模式,此模式下不會去 GOPATH/src
,project/vendor
下加載第三方依賴包,只會去GOPATH/pkg/mod
下載加載。
auto
:如果項目在 GOPATH/src
下,則轉爲普通模式,否則,轉爲mod模式。
off
:關閉mod模式,轉爲普通的GOPATH/src,project/vendor模式。
mod模式下安裝的依賴包都存放在GOPATH/pkg/mod
目錄下,在 mod 模式下導入第三方包時會去GOPATH/pkg/mod
目錄下加載,而不是普通模式下的GOPATH/src | project/vendor
目錄。
半自動維護依賴,你甚至可以不需要使用get預先安裝依賴,module在run test build時會檢測未下載的依賴,並自動下載它們。
go mod支持語義化版本號,比如
go get [email protected]
init
初始化項目爲module模式:go mod init moduleName
tidy
雖然是自動依賴(自動下載)。但建議,當我們下載了別人的mod項目到本地時,可以直接run,mod會自動下載未安裝的依賴,也可以執行一次tidy手動維護一次依賴,當我們要上傳自己本地的項目到倉庫時,應該先執行以下tidy命令,清理一下無用的依賴,再上傳。
vendor
將module項目轉爲普通的vendor項目,這時就需要將項目移至GOPATH/src下,並要保證projectName同moduleName保持一致,否則要手動去修改項目模塊包的加載路徑了。
其他命令
download download modules to local cache (下載依賴的module到本地cache))
edit edit go.mod from tools or scripts (編輯go.mod文件)
graph print module requirement graph (打印模塊依賴圖))
init initialize new module in current directory (在當前文件夾下初始化一個新的module, 創建go.mod文件))
tidy add missing and remove unused modules (增加丟失的module,去掉未使用的module)
vendor make vendored copy of dependencies (將依賴複製到vendor下)
verify verify dependencies have expected content (校驗依賴)
why explain why packages or modules are needed (解釋爲什麼需要依賴)
go.mod 文件必須要提交到 git 倉庫,但 go.sum 文件可以不用提交到 git 倉庫(gi t忽略文件 .gitignore 中設置一下)。