Closed7
今更Go moduleについて調べる

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

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

-mod=mod
importされたものがgo.modにない場合、vendorディレクトリを無視して自動的にgo.modを更新する
-mod=readonly
vendorディレクトリを無視して、更新が必要な場合にエラーを吐く
-mod=vendor
go.modを無視してvendorディレクトリを参照

go mod vendor
でルートディレクトにvendorディレクトリを作成して依存関係を保持する
vendorは依存関係をローカルに保持しておくためのもの
node.jsにおけるnode_modulesみたいなもの
vendorがあればネットワーク環境がなくてもビルドできるらしいが、普通node_modulesをgit管理しないように、vendorも管理しないと思うんだけどどうなんだろう?

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

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