Closed7

今更Go moduleについて調べる

mooriiimooriii

GOPATHモードとモジュールモードがある
GOPATHモードではvendorディレクトリとGOPATHを使って依存関係を探す
モジュールモードではgo.modから依存関係を探す
https://go.dev/ref/mod#mod-commands

mooriiimooriii

go.modの有無でモードが切り替わるが、Go 1.16からはgo.modの有無にかかわらずデフォルトがモジュールモードになっているらしい

mooriiimooriii

-mod=mod

importされたものがgo.modにない場合、vendorディレクトリを無視して自動的にgo.modを更新する

-mod=readonly

vendorディレクトリを無視して、更新が必要な場合にエラーを吐く

-mod=vendor

go.modを無視してvendorディレクトリを参照

mooriiimooriii

go mod vendor でルートディレクトにvendorディレクトリを作成して依存関係を保持する
vendorは依存関係をローカルに保持しておくためのもの
node.jsにおけるnode_modulesみたいなもの

vendorがあればネットワーク環境がなくてもビルドできるらしいが、普通node_modulesをgit管理しないように、vendorも管理しないと思うんだけどどうなんだろう?

mooriiimooriii

go get で入れるものだと思ってたらいつの間にか go install に変わってたらしい知らなかった

mooriiimooriii
  • go install : モジュールのインストール
  • go get : go.modの更新
このスクラップは2024/09/13にクローズされました