簡體   English   中英

我如何從 Dep 遷移到 Go 模塊

[英]How do I migrate from Dep to Go Modules

我目前正在使用 Dep 並想開始使用 Go 模塊。

我如何遷移?

從 Dep 遷移到 Go 模塊非常容易。

  1. 運行go version並確保您使用的是 Go 版本 1.11 或更高版本。
  2. 將您的代碼移到 GOPATH 之外或設置export GO111MODULE=on
  3. go mod init [module path] :這將從 Gopkg.lock 導入依賴項。
  4. go mod tidy :這將刪除不必要的導入,並添加間接導入。
  5. (可選)刪除您的供應商文件夾( rm -rf vendor/或移至垃圾箱)
  6. go build :進行測試構建以查看它是否有效。
  7. rm -f Gopkg.lock Gopkg.toml : 刪除 Dep 使用的過時文件。

Go 通過讀取Gopkg.lock文件從 Dep 導入了我的依賴項,並創建了一個go.mod文件。

如果您想保留您的供應商文件夾:

  1. 運行go mod vendor將您的依賴項復制到 vendor 文件夾中。
  2. 運行go build -mod=vendor以確保go build使用您的供應商文件夾。

要添加到@Nicholas 的答案中:

是來自官方的 golang 文檔:

要為現有項目創建 go.mod:

  1. 導航到 GOPATH 之外的模塊源代碼樹的根目錄:
$ export GO111MODULE=on                         # manually active module mode
$ cd $GOPATH/src/<project path>                 # e.g., cd $GOPATH/src/you/hello
  1. 創建初始模塊定義並將其寫入 go.mod 文件:
$ go mod init      

此步驟從任何現有的dep Gopkg.lock 文件或其他九種支持的依賴格式中的任何一種轉換,添加 require 語句以匹配現有配置。

  1. 構建模塊。 當從模塊的根目錄執行時,./... 模式匹配當前模塊中的所有包。 go build 將根據需要自動添加缺失或未轉換的依賴項以滿足此特定構建調用的導入:
$ go build ./...
  1. 按照配置測試模塊以確保它適用於所選版本:
$ go test ./...
  1. (可選)運行模塊的測試以及所有直接和間接依賴項的測試以檢查不兼容性:

$ go test all

另一種升級到模塊的方法。

  • 刪除 Gopkg.toml 和 Gopkg.lock

    rm Gopkg.*

  • 初始化 Go 模塊

    GO111MODULE=on go mod init

  • 運行 go mod tidy 以拉取所有間接模塊並刪除未使用的模塊

    GO111MODULE=on go mod tidy

  • 運行構建以確保一切正常

    go build

提示,如果您遇到幾個未找到的模塊,請手動更新 go.mod 文件中的模塊標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM