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
側で対応したので、この点は対応する必要なし。