web-dev-qa-db-ja.com

DepからGoモジュールに移行する方法

私は現在Depを使用しており、Goモジュールの使用を開始したいと考えています。

どうやって移行しますか?

25
Nicholas

Dep to 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を実行して、依存関係をベンダーフォルダーにコピーします。
  2. go build -mod=vendorを実行して、go buildがベンダーフォルダを使用していることを確認します。
38
Nicholas

@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ファイルまたは サポートされている他の9つの依存関係形式のいずれか から変換し、既存の構成と一致するようにrequireステートメントを追加します。

  1. モジュールをビルドします。モジュールのルートディレクトリから実行すると、。/ ...パターンは現在のモジュール内のすべてのパッケージに一致します。 go buildは、この特定のビルド呼び出しのインポートを満たすために必要に応じて、欠落または未変換の依存関係を自動的に追加します。
$ go build ./...
  1. 構成したモジュールをテストして、選択したバージョンで動作することを確認します。
$ go test ./...
  1. (オプション)モジュールのテストとすべての直接および間接の依存関係のテストを実行して、非互換性を確認します。

$ go test all
1
aitchkhan

モジュールにアップグレードする別の方法。

  • Gopkg.tomlとGopkg.lockを削除します

    rm Gopkg.*

  • Goモジュールを初期化する

    GO111MODULE=on go mod init

  • Go mod tidyを実行してすべての間接モジュールをプルし、未使用のモジュールを削除します

    GO111MODULE=on go mod tidy

  • ビルドを実行して、すべてが正常に機能することを確認します

    go build

見つからないモジュールがいくつかある場合は、go.modファイルのモジュールタグを手動で更新してください。

0
prashant