天天看點

go mod 使用詳解

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.mod

    檔案一旦建立後,它的内容将會被go toolchain全面掌控。go toolchain會在各類指令執行時,比如

    go get、go build、go mod

    等修改和維護

    go.mod

    檔案。
  • 如使用編輯器

    goland

    , 也需要開啟設定

    Enable Go models intergration

1.2

go mod

關鍵字

go.mod

提供了

module

require

replace

exclude

四個指令

  • module

    語句指定包的名字 (路徑)
  • require

    語句指定的依賴項子產品
  • replace

    語句可以替換依賴項子產品
  • exclude

    語句可以忽略依賴項子產品

1.3 使用

go get

更新

go mod

中依賴

  • go get package@version

    将會更新到指定的版本号 version
  • go get -u package

    将會更新到最新的修訂版本,如

    go get -u github.com/gin-gonic/gin

2. go mod 批量操作

2.1 檢視

go.mod

中有更新的直接依賴項

go list -u -f '{{if (and (not (or .Main .Indirect)) .Update)}}{{.Path}}{{end}}' -m all

2.2 批量更新他們

  • 使用

    go get -u $()

  • 使用

    xargs