HUGOでコンテンツディレクトリを別レポジトリで管理する
HUGOでサイトレイアウトデータとコンテンツを同時に管理していたらと、レポジトリのコミットが汚れて訳わからなくなってしまったので、コンテンツを別管理できないか方法を考えてみました。
公開日:2020年4月27日
Themeを使う
基本的には、この方法がベストです。コンテンツを別にするというより、「コンテンツ以外を別にする」という感じですね。
仮にThemeとして一般公開していないオレオレThemeだったとしても、layoutディレクトリやサイトロゴなどの固定ファイルを別レポジトリで管理してThemeとして登録することで、
- git上でcontents系とlayout系のコミットがごちゃごちゃにならない
- ビルド時にgit Submodule updateをかければ常に最新になる
- サイトの更新をcontentディレクトリ主体にできるからCMSっぽく使える
というメリットがあります。
ただし、git submoduleは「git submodule updateをしない限り勝手にアップデートはしない」というルールがあるので、この点は注意が必要です。
Themeの作り方
これは難しいところはなくて、
コマンドで、
hugo new theme テーマ系
これでHUGOテーマを新規作成して、layoutディレクトリに必要ファイルを設置。できたらGithubなどのレポジトリにアップ。
続いて、HUGOプロジェクトのルートで
git submodule add レポジトリURL themes/テーマ名
として、submodule登録。
あとは、config.tomlに
theme : テーマ名
と入れればOKです。
contentsをSubmoduleを使う
これはあまりオススメなではないんですが、Themeを使う方法とは全く逆で、contentディレクトリをcontentだけのレポジトリで管理する方法です。
HUGOサイトとして公開する方法は、Themeを使う方法と同じでgit submoduleでcontentディレクトリに最新データを引っ張ってくるのですが、
- contentレポジトリの更新がHUGOの更新トリガーにならない
- contentを更新したら何かのトリガーでビルドを走らせる必要がある
という問題があります。
ただ、contentしかないレポジトリになるので、文章管理としてはかなりキレイになりますし、下書きレベルでもビルドが走らないなどのメリットもあります。
HUGOをバックグランドのページ生成エンジンにしたCMSサービスとかだったら、この方式が良いのかもしれませんけどね。
–
HUGOでコンテンツディレクトリを別レポジトリで管理する方法をみてきました。
無難にTheme化するのがベストですね。
新着ノート
-
Gitlabの2段階認証下でコンテナレジストリにPushする方法
gitlab
公開日:2020年12月23日
-
HUGO
公開日:2020年4月27日
新着コード
-
cURLでCloudflare APIでキャッシュを削除する
cloudflare
公開日:2020年5月1日
-
iOS Safariでselectを含む要素にoverflow-y:scrollすると横にスクロールする時の対応
iOS
公開日:2020年4月15日