Golangのモジュール・依存パッケージの管理について

go getとかgo mod、go.modファイルのこととか整理しました。

依存パッケージの管理

go.modファイルで依存関係のパッケージが管理されます。このパッケージの集まりをモジュールと言うそうな。

A module is a collection of Go packages stored in a file tree with a go.mod file at its root.

https://blog.golang.org/using-go-modules

go.modは次のコマンドで作成します。usernameはgithubのユーザ名です。

# 対象のパッケージディレクトリ内にgo.modを作成するコマンド
go mod init github.com/username/mygoapp

go.modがあると、go getgo testgo buildなど、各種goのコマンドを実行した時に、自動でgo.modに記載されている依存関係のパッケージが更新されます。

go.sumというファイルも同時に作成されるのですが、これはパッケージのバージョンをロックするためのファイルです。

依存パッケージの追加

パッケージの追加はgo get

# ホットリロードを実装するモジュール「realize」の追加
go get github.com/oxequa/realize

下記のように...とやると、全てのパッケージを丸ごと持ってくることが出来ます。

# Golangの標準パッケージを全部持ってくる
go get golang.org/x/tools/cmd/...

-uオプションをつけると更新してくれます。

# 全部更新
go get -u 

# パッチレベルで更新
go get -u=patch

# パッケージごとに更新
go get -u hogehoge

依存パッケージのお掃除

開発を進めていくと、不要なパッケージが出てきたりしてどんどん汚れていきます。

次のコマンドで使われていないパッケージを削除したり、足りないパッケージを追加してお掃除できます。

go mod tidy

まとめ

開発段階でパッケージをどんどんインストールするときはgo get

ある程度開発が落ち着いてきたら折を見てgo mod tidyでgo.modを整理。

必要なパッケージがgo.modにリストアップされていればgo buildで依存パッケージが入るので、Dockerで環境を用意している場合はdockerfileにgo getは不要、go.modファイルとgo buildコマンドがあれば良い。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください