go mod 官方推薦包管理工具,是在 golang 1.11
中新加的特性。
如何使用 go mod
版本需要手動開啟使用
go1.11
, 設定
go mod
環境變量
go
GO111MODULE=on
版本之後,作為
go1.14
預設的 包管理工具
golang
go mod 指令
指令 | 示例 | 說明 |
---|---|---|
init | initialize new module in current directory | 目前目錄初始化 mod |
tidy | add missing and remove unused modules | 拉取缺少的子產品,移除不用的子產品 |
vendor | make vendored copy of dependencies | 将依賴複制到 vendor 下 |
download | download modules to local cache | 下載下傳依賴包 |
graph | print module requirement graph | 列印子產品依賴圖 |
verify | verify dependencies have expected content | 驗證依賴是否正确 |
why | explain why packages or modules are needed | 解釋為什麼需要依賴 |
1. 如何在項目中使用
1.1 建立一個新項目 (或非 go mod 包管理項目)
> go mod init projectName
-
檔案一旦建立後,它的内容将會被go toolchain全面掌控。go toolchain會在各類指令執行時,比如go.mod
等修改和維護go get、go build、go mod
檔案。go.mod
- 如使用編輯器
, 也需要開啟設定goland
Enable Go models intergration
1.2 go mod
關鍵字
go mod
go.mod
提供了
module
、
require
、
replace
、
exclude
四個指令
-
語句指定包的名字 (路徑)module
-
語句指定的依賴項子產品require
-
語句可以替換依賴項子產品replace
-
語句可以忽略依賴項子產品exclude
1.3 使用 go get
更新 go mod
中依賴
go get
go mod
-
将會更新到指定的版本号 versiongo get package@version
-
将會更新到最新的修訂版本,如go get -u package
go get -u github.com/gin-gonic/gin
2. go mod 批量操作
2.1 檢視 go.mod
中有更新的直接依賴項
go.mod
go list -u -f '{{if (and (not (or .Main .Indirect)) .Update)}}{{.Path}}{{end}}' -m all
或
2.2 批量更新他們
- 使用
go get -u $()
- 使用
xargs