go mod vendor
経緯
HerokuでGoを利用するスターターガイドの中で、go mod vendor
という知らないコマンドが出てきたので調べてみました。
Go Modules
Goでビルドする際には依存関係はGo Modulesが管理されていて、その内容はgo.modファイルに記載されています。
go mod cache (default)
依存するパッケージを$GOPATH/pkg/mod/
にダウンロードします。
依存関係をUpdateするには以下のコマンドを使います。
go mod tidy
コマンドでgo.mod
を更新します。
go mod vendor
依存するパッケージをworkspaceのvendor
フォルダ配下にダウンロードします。
依存関係をUpdateするには以下のコマンドを使います。
go mod tidy
コマンドでgo.mod
を更新します。go mod vendor
コマンドでvendor
配下のパッケージとvendor/modules.txt
を更新します。
さいごに
Herokuのスターターガイドでは、vendorの利点はアプリケーションの耐浸食性を保てることのようです。 依存関係のあるパッケージが変更されてもvendor配下にコピーしたパッケージを使うことで影響を受けない、といったことでしょうか。