モジュールしたい(go.mod)
$ hugo mod init モジュール名
$ hugo mod get テーマのモジュールパス
$ hugo mod tidy
Hugoは内部でGo言語のパッケージ管理の仕組み(go.mod/go.sum)を使って、
テーマや依存関係を管理できます。
これを「Hugoモジュール」と呼びます。
テーマしたいで紹介したgit submoduleによるテーマ追加とは別の方法で、
pyproject.tomlのように依存関係をファイルで宣言的に管理できるのが特徴です。
モジュールを初期化したい(hugo mod init)
$ hugo mod init github.com/ユーザー名/リポジトリ名
1# go.mod
2module github.com/ユーザー名/リポジトリ名
3
4go 1.26.7
hugo mod initでサイトのルートにgo.modが生成され、サイト自体がひとつのモジュールになります。
モジュール名にはGitHubなどのリポジトリパスを使うのが一般的です。
テーマを追加したい(hugo mod get)
$ hugo mod get github.com/nunocoracao/blowfish/v2
1# hugo.toml
2[module]
3 [[module.imports]]
4 path = "github.com/nunocoracao/blowfish/v2"
hugo.tomlの[module.imports]にテーマのモジュールパスを指定してからhugo mod getを実行すると、
テーマをダウンロードしてgo.mod・go.sumに依存関係が追記されます。
themes/ディレクトリにサブモジュールを追加する必要がなく、リポジトリがすっきりします。
依存関係を整理したい(hugo mod tidy)
$ hugo mod tidy
go.mod・go.sumから使われていない依存関係を削除し、必要な依存関係を補います。
pyproject.tomlに対するuv lockのような役割です。
依存関係を確認したい(hugo mod graph)
$ hugo mod graph
github.com/ユーザー名/リポジトリ名 github.com/nunocoracao/blowfish/v2@v2.106.0
サイトが依存しているモジュールの一覧を、依存関係のグラフ形式で表示します。
注釈
go.sumにはモジュールのハッシュ値が記録されるため、gitに含めてバージョン管理しておくとよいです。
チーム開発や別環境でのビルド時に、同じバージョンの依存関係を再現できます。