Hugo
Quick Start
hugo new site ${PROJECT_NAME}
cd ${PROJECT_NAME}
git init
# テーマの追加
git submodule add ${GIT_REPO_OF_THEME} themes/${THEME_NAME}
# configファイルで使用するテーマを指定する
echo 'theme = "ananke"' >> config.toml
# コンテンツの作成
hugo new posts/my-first-post.md
# サーバを起動
hugo server -D
hugo new
で記事を作成するとドラフト記事として作成される(fontmatter のdraft
が true
になる)。
ドラフト記事は、hugo server
で-D
オプションをつけないと表示され ないので注意する。
Go Template
こちらを参照
Config
baseURL = "https://yoursite.example.com/"
footnoteReturnLinkContents = "↩"
title = "My Hugo Site"
[params]
AuthorName = "Jon Doe"
GitHubUser = "spf13"
ListOfFoo = ["foo1", "foo2"]
SidebarRecentLimit = 5
Subtitle = "Hugo is Absurdly Fast!"
[permalinks]
post = "/:year/:month/:title/"
詳細は公式ドキュメントを参照
params
params の内容は、.Site.Params
としてテンプレート内から利用できる。
日付の調整
日付、最終編集日、公開開始日、公開終了日をどのように設定するかをカスタマイズできる。詳細はドキュメントを参照
Blackfriday
デフォルトの Markdown パーサーである Blackfriday の調整ができる。詳細はドキュメントを参照
環境変数で Config を設定する
env HUGO_TITLE="My Hugo Site" hugo
CLI
hugo
プロジェクトをビルドしpublic
フォルダに出力する。
Hugo はpublic
フォルダ内のファイルを削除しないので、ビルドの前に手動でpublic
フォルダを削除しておくこと。
下記に該当するコンテンツはビルドされないので注意する。 この挙動を変更したい場合はドキュメントを参照すること。
- front matter に
publishdate
が設定されている - front matter に
expirydate
が設定されている - front matter の
draft
がtrue
に設定されている
hugo
hugo server
開発用のサーバをhttp://localhsot:1313
で立ち上げる。
hugo server -D
Directory Structure
archetypes
hugo new post/***
を実行した際の Front Matter の雛形を管理する。
assets
Hugo Pipes で処理する必要のあるファイルを管理する。.Permalink
又は.RelPermalink
が使われているファイルのみ、public
ディレクトリに出力される??
config.toml
Hugo の Config ファイル
content
全てのコンテンツを管理する。
好きなだけネストさせるこができる。ただし、content
フォルダ直下は特別で、配置できるファイルは次の通り。
- _index.md (トップページになる)と関連する画像ファイルなど
- フォルダ
content
直下のフォルダは、conetnt section
として認識される。例えば、blog
,articles
, tutorials
というセクションを作りたい場合は、その名前のついたフォルダをcontent
フォルダ直下に作成する。
デフォルトでは、各セクションの配下に作成された記事には、セクションの名前(blog
など)がContent Type
として自動的に設定される。Content Type
は、どのレイアウトの選択等に使用される。
data
コンテンツの中で、json, yaml, toml といったデータを扱う場合、ここで管理する。 Data templatesを使えば、動的にデータを取得することもできる。
layouts
テンプレートを管理する。テンプレートの形式は HTML であり、下記の種類がある。
- list page templates
- homepage templates
- taxonomy templates
- partial templates
- single page templates
- ...and more
static
images, CSS, Javascript といった静的コンテンツを管理する。
そのままpublic
フォルダのルートに配置される。
Resources
Resouces とは
content
フォルダ内の全てのファイルはResources
になる。Hugo が MIME type を認識できる限り。content
フォルダ直下がsection
になる
全ての Resources を一覧表示
{{ range .Resources }}
<li><a href="{{ .RelPermalink }}">{{ .ResourceType }}</a></li>
{{ end }}
絶対パスが必要なら.Permalink
をつかうこと。
Type を指定して一覧表示
タイプ名は、ページの場合はpage
、その他の場合は image
やjson
などの MIME タイプで指定する。
{{ range .Resources.ByType "image" }} {{ .ResourceType }} {{ end }}
特定の条件にあてはまる Resouces を表示
例:ファイル名がlogo
で始まるリソースを表示する
<!-- 当てはまるもの全てを取得 -->
{{ range .Resources.GetMatch "logo*" }} {{ . }} {{ end }}
<!-- 当てはまる最初の一つのみを取得 -->
{{ $logo = .Resources.Match "logo*" }} {{ $logo.ResourceType }}
コンテンツを表示
Page Resources = カレントページから見た他の page, images, pdfs, etc...
{{ range .Resources.ByType "image" }} {{ .Content }} {{ end }}
Themes
- テーマの一覧
- テーマごとに設定方法が異なるため、README.md をよく読むこと
インストール方法
git の submodule 機能を使ってインストールするとよい。
git submodule add ${GIT_REPO_OF_THEME} themes/${THEME_NAME}
echo 'theme = "THEME_NAME"' >> config.toml
テーマの Config
テーマ自身もconfig.toml
を持つことができる。ただし、設定できる項目は下記だけ。
params
(global and per language)menu
(global and per language)outputformats
andmediatypes
複数のテーマを使う
- 複数のテーマを指定した場合は、マージされる。左側が優先される。
i18n
,data
,config.toml
は deep merge される。static
,layouts
,archetypes
はファイルベースで merge される。
theme = ["my-shortcodes", "base-theme", "hyde"]
Content Management
Page Bundles
Page Resources を管理する方法のこと。下記の赤い枠が Page Bundles を表す。
Leaf Bundle
content
フォルダ内のindex.md
を含むフォルダのことsingle
レイアウトが使用される- ネストできない
- レイアウトファイルにおいて、page, non-page(images, PDFs, etc...) のどちらもリソースとして使用できる。
Branch Bundle
content
フォルダ内の_index.md
を含むフォルダのことlist
レイアウトが使用される- 他のコンテンツを列挙したい時に使う
- レイアウトファイルにおいて、page はリソースとして使用できない。
Front Matter
Pre-defined
特にweight
は並び替えによく使う。
User-defined
ユーザ定義の Front Matter を記述することもできる。その場合、テンプレートから.Params.some_frontmatter_name
でアクセスできる。
Page Resources
カレントページから利用できる、画像、他のページ、PDF 等ドキュメントのこと。
.Resources