dep で管理していた Go言語のレポジトリを go modules に移行しました
Go言語の依存関係管理に dep を使っていたのですが、Go言語標準になる go modules に重い腰をあげて移行しました。
dep を使っていると以下で対応完了し、マイグレーションは簡単でした。
Go1.13になるまではモードが混在するので、やや使いにくいケースもあると思いますが、先行して使ってみようと思います。
以下詳細です。
1. 環境変数設定
現状、環境変数 GO11MODULE で GOPATHモードとモジュールモードを切り替える仕様になっているので、モジュールモードになるように設定します。
$ export GO11MODULE=on
2. 初期化
レポジトリのルートディレクトリで初期化コマンドを実行します。これで go.mod ファイルが作成されます。
$ go mod init
3. 依存関係抽出
go mod tidy で依存関係を抽出します。
$ go mod tidy
4. dep 関連ファイル削除
dep が使っていた設定ファイルやインストールディレクトリが不要になるので削除。
$ rm -r Gopkg.toml Gopkg.lock vendor/
5. ビルド・CI関連ファイル修正
ビルドに Makefile 、CI に TravisCI を使っていたので .travis.yml をそれぞれ修正。
Makefile
これまでは
depをインストールdep ensureで依存をインストール
だったのが
go mod download
だけでよくなりました。
.travis.yml
TravisCI の標準の GO11MODULE の値は auto でこのモードの場合は GOPATH 配下のコードはモジュールモードで動作しないので、 on にセット。
env: GO11MODULE=on
before_install ないしは install セクションで依存モジュールをインストールするが、Makefile 側で対応したので、この点は対応する必要なし。