kanta's spike

GitHubで管理している自作のHugoテーマをモジュール化した。

しかし、Hugoテーマを修正するたびに、毎回プッシュしモジュールをアップデートする必要があり面倒である。

もっと、手軽にHugoテーマを改修できるようにしたい。

解決策

Hugoモジュールは、Go言語のモジュール機能を利用しており、 go.modファイル内に、replaceディレクティブを記載することにより、モジュールをローカルパスに置き換えることができる。

replace module-path [module-version] => replacement-path [replacement-version]

以下を例とした場合、

  • サイト側:
    • ローカルで管理しているHugoサイト モジュール名: myblog
      • /Users/kanta/blog
  • モジュール側:
    • GitHub上のテーマモジュール: モジュール名: github.com/kantas-spike/kantas-theme
    • ローカルファイルシステムにgithub.com/kantas-spike/kantas-themeをクローン
      • /Users/kanta/hacking/products/002_kantas_theme
  • やりたい事:
    • サイト側で、参照しているテーマモジュールを、ローカルシステム上のテーマモジュールに切り替える

Hugoサイトで、Hugoテーマをインポートしているため、/Users/kanta/blog/go.modは以下のようになる。

module myblog

go 1.18

require github.com/kantas-spike/kantas-theme v0.0.0-20230928195921-52393738eda2 // indirect

Hugoテーマの参照先を、GitHub上でなはなく、ローカルファイルシステムに切り替えるために、go.modを以下に修正する。

module myblog

go 1.18

require github.com/kantas-spike/kantas-theme v0.0.0-20230928195921-52393738eda2 // indirect
// replaceによりモジュールの参照先を切り替える
replace github.com/kantas-spike/kantas-theme => /Users/kanta/hacking/products/002_kantas_theme

この状態でHugoサーバーをリスタートすれば、ローカルファイルシステム上のHugoテーマの修正が、 リアルタイムでブログに反映される。

これにより、Hugoサーバーでテーマの修正を確認し、修正が完了したところで、 GitHubにプッシュするというサイクルでテーマを開発できるようになる。

参考

作成日: 2023/10/27