Hugo の設定
Hugo サイトの設定方法。
設定ファイル
Hugo は (サイトルートにある場合) hugo.toml、hugo.yaml、または hugo.json をデフォルトのサイト設定ファイルとして使用します。
ユーザーは、コマンドラインの --config スイッチを使用して、1 つまたは複数のサイト設定ファイルでそのデフォルトをオーバーライドすることを選択できます。
例:
hugo --config debugconfig.toml
hugo --config a.toml,b.toml,c.toml
--config スイッチに指定できます。
hugo.toml vs config.toml
Hugo 0.110.0 では、デフォルトの設定ベースファイル名を hugo に変更しました (たとえば、 hugo.toml)。
私たちはまだ config.toml などを探しますが、最終的には名前を変更することをお勧めします (ただし、古いバージョンの Hugo をサポートしたい場合は待つ必要があります)。
設定ディレクトリ
単一のサイト設定ファイルを使用することに加えて、 configDir ディレクトリ (デフォルトは config/) を使用すると、組織や環境固有の設定を簡単に維持することができます。
- 各ファイルは、
[Params]にはparams.toml、[Menu]にはmenu(s).toml、[Languages]にはlanguages.tomlなど、設定のルートオブジェクトを表します。 - 各ファイルの内容は、たとえば以下のように、トップレベルでなければなりません。
- 各ディレクトリは、環境固有の設定を含むファイル群を保持します。
- ファイルは言語ごとにローカライズすることが可能です。
├── config
│ ├── _default
│ │ ├── hugo.toml
│ │ ├── languages.toml
│ │ ├── menus.en.toml
│ │ ├── menus.zh.toml
│ │ └── params.toml
│ ├── production
│ │ ├── hugo.toml
│ │ └── params.toml
│ └── staging
│ ├── config.toml
│ └── hugo.toml
上記の構造を考えると、hugo --environment staging を実行すると、Hugo は config/_default のすべての設定を使用し、その上に staging の設定をマージします。
これをよりよく理解するために、例を挙げてみましょう。たとえば、あなたの Web サイトに Google アナリティクスを利用しているとします。この場合、googleAnalytics = "G-XXXXXXXX" を hugo.toml で指定する必要があります。ここで、次のようなシナリオを考えてみましょう。
- Analytics コードを開発中に、つまり
localhostにロードしたくない場合 - 本番環境とステージング環境に別々の Google アナリティクス ID を使用したい (たとえば、以下のような)
- 本番環境に
G-PPPPPPPP - ステージング環境に
G-SSSSSSSS
- 本番環境に
上記のシナリオを考慮して、hugo.toml ファイルを以下のように設定する必要があります。
-
default/hugo.tomlでは、googleAnalyticsパラメータを記述する必要は全くありません。これにより、開発用サーバ、つまりhugo serverを実行したときに、Google アナリティクスのコードがロードされないようになります。デフォルトでは、Hugo はhugo serverを実行するときにEnvironment=developmentを設定し、_defaultフォルダーにある設定ファイルを使用するので、これはうまくいきます。 -
production/hugo.tomlには、以下の 1 行が必要です。googleAnalytics = "G-PPPPPPPP"この設定ファイルでは、
title、baseURL、themeなどの他のすべてのパラメータを改めて記述する必要はありません。本番環境では異なる、あるいは新しいパラメータのみを記述する必要があります。これは、Hugo が_default/hugo.tomlの上に マージ するためです。これでhugo(ビルドコマンド) を実行すると、デフォルトでEnvironment=productionが設定されます。したがって、G-PPPPPPPの解析コードが本番環境の Web サイトに存在することになります。 -
同様に
staging/hugo.tomlにも、以下の 1行だけ記述すればよいです。googleAnalytics = "G-SSSSSSSS"ここで、ステージング環境を使用していることを Hugo に伝える必要があります。ビルドコマンドは
hugo --environment stagingで、ステージング Web サイトにG-SSSSSSの解析コードをロードします。
hugo server コマンドを、production (本番環境) では hugo コマンドを使用します。
テーマから設定をマージする
_merge の設定値は、以下のいずれかを指定できます。
- none
- マージはしない。
- shallow
- 新しいキーの値だけを追加する。
- deep
- 新しいキーの値を追加し、既存のキーをマージする。
以下のデフォルト設定のように、それほど冗長にする必要はないことに注意してください。 設定されていない場合は、上位の _merge 値が継承されます。
すべてのコンフィギュレーション設定
以下は Hugo で定義された変数の完全なリストです。 ユーザーは、サイト設定ファイルでこれらの値をオーバーライドすることができます。
archetypeDir
デフォルト値: “archetypes”
Hugo がアーキタイプ ファイル (コンテンツ テンプレート) を検索するディレクトリ。 Also see Module Mounts Config for an alternative way to configure this directory (from Hugo 0.56).
assetDir
デフォルト値: “assets”
Hugo が Hugo パイプ で使用するアセットファイルを検索するディレクトリ。 Also see Module Mounts Config for an alternative way to configure this directory (from Hugo 0.56).
baseURL
公開サイトの絶対 URL (プロトコル、ホスト、パス、末尾のスラッシュ) (たとえば、 https://www.example.org/docs/)。
build
「ビルドを設定する」 を参照してください。
buildDrafts (false)
デフォルト値: false
ビルド時にドラフトを含めます。
buildExpired
デフォルト値: false
期限切れのコンテンツを含めます。
buildFuture
デフォルト値: false
publishdate (公開日) が将来のコンテンツを含めます。
caches
「ファイルキャッシュを設定する」 を参照してください。
cascade
コンテンツツリー内のページに、デフォルトの設定値 (フロントマター) を渡します。サイト設定でのオプションは、ページのフロントマターと同じです。フロントマター カスケード をご覧ください。
canonifyURLs
デフォルト値: false
相対 URL を絶対 URL に変換できるようにします。
cleanDestinationDir
デフォルト値: false
ビルド時に、静的ディレクトリにないファイルをビルド先から削除します。
contentDir
デフォルト値: “content”
Hugo がコンテンツファイルを読み込むディレクトリ。 Also see Module Mounts Config for an alternative way to configure this directory (from Hugo 0.56).
copyright
デフォルト値: ""
サイトの著作権表示で、通常はフッターに表示されます。
dataDir
デフォルト値: “data”
Hugo がデータ ファイルを読み取るディレクトリ。 Also see Module Mounts Config for an alternative way to configure this directory (from Hugo 0.56).
defaultContentLanguage
デフォルト値: “en”
言語インジケーターのないコンテンツは、デフォルトでこの言語になります。
defaultContentLanguageInSubdir
デフォルト値: false
サブディレクトリにあるデフォルトのコンテンツ言語を、たとえば content/en/ のようにレンダリングします。サイトルート / は /en/ にリダイレクトされます。
disableAliases
デフォルト値: false
エイリアス リダイレクトの生成を無効にします。 disableAliases が設定されていても、エイリアス自体はページに保持されることに注意してください。 これの動機は、.htaccess や Netlify の _redirects ファイルなどでカスタム出力形式を使用して 301 リダイレクトを生成できるようにするためのものです。
disableHugoGeneratorInject
デフォルト値: false
デフォルトでは、Hugo は home page only の HTML ヘッドにジェネレーター メタタグを挿入します。 これをオフにすることもできますが、Hugo の人気が上昇するのを見るには良い方法なので、オフにしていただけるとありがたいです。
disableKinds
デフォルト値: []
指定された Kinds のすべてのページの無効化を有効にします。 このリストで使用できる値は、 "page"、"home"、"section"、"taxonomy"、"term"、"RSS"、"sitemap"、" robotsTXT"、"404" です。
disableLiveReload
デフォルト値: false
ブラウザ ウィンドウの自動ライブリロードを無効にします。
disablePathToLower
デフォルト値: false
URL/ パスを小文字に変換しないようにします。
enableEmoji
デフォルト値: false
ページ コンテンツで絵文字のサポートを有効にします。「絵文字チートシート」 を参照してください。
enableGitInfo
デフォルト値: false
各ページの .GitInfo オブジェクトを有効にします (Hugo サイトが Git でバージョン管理されている場合)。これにより、各ページの Lastmod パラメータが、そのコンテンツファイルの最終 git commit 日時を使用して更新されます。
enableInlineShortcodes
デフォルト値: false
インライン ショートコードのサポートを有効にします。 詳細は、「インライン ショートコード」 を参照してください。
enableMissingTranslationPlaceholders
デフォルト値: false
デフォルト値の代わりにプレースホルダーを表示するか、翻訳がない場合は空文字列を表示します。
enableRobotsTXT
デフォルト値: false
robots.txt ファイルの生成を有効にします。
frontmatter
「フロントマターの設定」 を参照してください。
googleAnalytics
デフォルト値: ""
Google アナリティクスのトラッキング ID です。
hasCJKLanguage
デフォルト値: false
true の場合、コンテンツ内の中国語/日本語/韓国語の自動検出を行います。これにより、.Summary と .WordCount が日中韓 (CJK) の言語に対して正しく動作するようになります。
imaging
「画像処理の設定」 を参照してください。
languageCode
デフォルト値: ""
RFC 5646 で定義された言語タグでう。この値は、以下の値を設定するために使用されます。
- 内部の RSS テンプレート
の
<language>要素 - 内部の エイリアス テンプレート
にある
<html>要素のlang属性。
languages
「言語を設定する」 を参照してください。
disableLanguages
「言語を無効にする」 を参照してください。
markup
「マークアップを設定する」 を参照してください。
mediaTypes
「メディアタイプを設定する」 を参照してください。
menus
「メニュー」 を参照してください。
minify
「ミニファイを設定する」 を参照してください。
module
モジュール設定です。「モジュール設定」 を参照してください。
newContentEditor
デフォルト値: ""
新しいコンテンツを作成する際に使用するエディターです。
noChmod
デフォルト値: false
ファイルのパーミッション モードを同期させません。
noTimes
デフォルト値: false
ファイルの修正時刻を同期させません。
outputFormats
「出力形式を設定する」 を参照してください。
paginate
デフォルト値: 10
ページネーション における、1ページあたりの要素のデフォルト数です。
paginatePath
デフォルト値: “page”
ページネーション中に使用されるパス要素 (https://example.com/page/2)。
permalinks
「コンテンツ管理」 を参照してください。
pluralizeListTitles
デフォルト値: true
リスト内のタイトルを複数形にします。
publishDir
デフォルト値: “public”
Hugo が最終的な静的サイト (HTML ファイルなど) を書き込むディレクトリです。
related
「関連コンテンツ」 を参照してください。
relativeURLs
デフォルト値: false
これを有効にすると、すべての相対 URL はコンテンツルートからの相対的になります。絶対 URL には影響しないことに注意してください。
refLinksErrorLevel
デフォルト値: “ERROR”
ページリンクを解決するために ref または relref を使用し、リンクが解決できなかった場合に、このログレベルでログに記録されます。有効な値は ERROR (デフォルト) または WARNING です。 ERROR が指定された場合は、ビルドに失敗します (exit -1)。
refLinksNotFoundURL
ref または relref でページ参照が見つからない場合に、プレースホルダとして使用する URL。そのまま使用される。
removePathAccents
デフォルト値: false
コンテンツ パスの 複合文字 から 非空白記号 を削除します。
content/post/hügó.md --> https://example.org/post/hugo/
rssLimit
デフォルト値: -1 (unlimited)
RSS フィードの最大アイテム数。
sectionPagesMenu
「メニュー」 を参照してください。
security
「セキュリティポリシー」 を参照してください。
sitemap
デフォルトの サイトマップ設定 です。
summaryLength
デフォルト値: 70
.Summary
に表示するテキストの長さを単語単位で指定します。
taxonomies
「タクソノミーを設定する」 を参照してください。
theme
テーマをインポートする方法については、「モジュール設定」 を参照してください。
themesDir
デフォルト値: “themes”
Hugo がテーマを読み込むディレクトリ。
timeout
デフォルト値: “30s”
duration または秒単位で指定される、ページコンテンツ生成のためのタイムアウト。 注意: これは再帰的なコンテンツ生成から抜け出すために使用されます。ページの生成に時間がかかる場合、この制限を上げる必要があるかもしれません (たとえば、大きな画像処理を必要としたり、リモートコンテンツに依存する場合など)。
timeZone
time 関数
で、そのような情報なしでフロントマターの日付を解析するために使用される、たとえば Europe/Oslo のようなタイムゾーン (または場所)。有効な値のリストはシステムに依存しますが、 UTC、Local、そして IANA タイムゾーンデータベース
にある任意の場所を含める必要があります。
title
サイトのタイトルです。
titleCaseStyle
デフォルト値: “AP”
「タイトルケースを設定する」 を参照してください。
uglyURLs
デフォルト値: false
有効にすると、/filename/ の代わりに /filename.html の形式の URL が作成されます。
watch
デフォルト値: false
ファイルシステムの変更を監視し、必要に応じて再作成します。
*nix マシン上でサイトを開発しているならば、ここでは、コマンドラインから設定オプションを見つけるための便利なショートカットを紹介します。
cd ~/sites/yourhugosite
hugo config | grep emoji
以下のような出力を示します。
enableemoji: true
ビルドを設定する
build 設定セクションには、ビルドに関連するグローバルな設定オプションが含まれています。
- buildStats
- 有効にすると、プロジェクトのルートに
hugo_stats.jsonファイルが作成されます。このファイルには、公開されているサイト内のすべての HTML 要素のclass属性、id属性、タグの配列が含まれています。このファイルは、サイトから 未使用の CSS を削除する 際のデータソースとして使用します。このプロセスは、枝刈り (pruning)、パージ (purging)、ツリーシェイク (tree shaking) としても知られています。
disableClasses、disableIDs、disableTags キーを使用して、hugo_stats.json から class 属性、id 属性、またはタグを除外します。
サーバーの部分的なビルドの性質上、新しい HTML エンティティはサーバーの実行中に追加されますが、古い値はサーバーを再起動するか、通常の hugo ビルドを実行するまで削除されません。
- cachebusters
- See キャッシュバスターを設定する
- noJSConfigInAssets
- js.Build
の実行からのインポートのマッピングを含む
jsconfig.jsonを/assetsフォルダーに書き込むことをオフにします。このファイルは VS Code のようなコードエディタでのインテリセンスやナビゲーションを助けるためのものです。なお、js.Buildを使用しない場合、ファイルは書き込まれないことに注意してください。 - useResourceCacheWhen
- PostCSS と ToCSS で、
/resources/_genにあるキャッシュされたリソースをいつ使用するかを指定します。有効な値はnever、alwaysおよびfallbackです。最後の値は、PostCSS/拡張版が利用できない場合に、キャッシュを試行することを意味します。
キャッシュバスターを設定する
Tailwind 3.x の JIT コンパイラを使用した開発をサポートするために、build.cachebusters 設定オプションが追加されました。 build 設定は以下のようになります。
上記のいくつかの重要なポイントは、writeStats = true です。
これは、レンダリングされた出力で使用される HTML クラスなどを使用して、ビルドごとに hugo_stats.json ファイルを書き込みます。
このファイルを変更すると、styles.css ファイルの再構築がトリガーされます。
また、Hugo のサーバーウォッチャーに hugo_stats.json を追加する必要があります。
実行例は、 Hugo Starter Tailwind Basic
を参照してください。
- source
- Hugo の仮想コンポーネント ディレクトリの 1 つに対する正規表現一致ファイル (通常は
assets/...)。 - target
sourceが変更されたときに期限切れになる必要があるリソース キャッシュ内のキーに一致する正規表現。$1のように、sourceに一致する正規表現グループを式に使用できます。
サーバーを設定する
これは hugo server を実行するときにのみ関係し、開発中に HTTP ヘッダーを設定することができるので、コンテンツ セキュリティ ポリシーなどをテストすることができます。設定形式は、Netlify の
と少し強力な glob マッチング
にマッチしています。
これは「開発専用」なので、以下のように development 環境の下に置くのが理にかなっているかもしれません。
また、サーバーの簡単なリダイレクトルールを指定することもできます。この構文もまた、Netlify のものと同様です。
status コード 200 は URL リライト
をトリガーすることに注意してください。これは、SPA の状況で必要なものです。たとえば、次のようにします。
force=true を設定すると、パスに既存のコンテンツがある場合でもリダイレクトを行います。Hugo 0.76 以前は force がデフォルトの動作でしたが、これはNetlify が行う方法と一致していることに注意してください。
404 サーバーエラーページ
デフォルトでは、404.html テンプレートで hugo server を実行すると、Hugo はすべての 404 エラーをレンダリングします。サーバーの設定
に 1 つ以上のリダイレクトを追加している場合は、404リダイレクトを明示的に追加する必要があることに注意してください。
タイトルケースを設定する
title
テンプレート関数と Hugo の自動セクションタイトルで使用されるタイトルスタイルを指定するには、titleCaseStyle を設定します。
値は、以下のいずれかになります。
ap(デフォルト): Associated Press (AP) スタイルブック の大文字と小文字のルールchicago: シカゴ・マニュアル・オブ・スタイルgo: すべての単語を大文字にするという Go の慣例。firstupper: 最初の単語の最初の文字を大文字にします。none: 大文字は使用しません。
コンフィギュレーション環境変数
- HUGO_NUMWORKERMULTIPLIER
- Hugo の並列処理で使用するワーカーの数を増減するように設定できます。 設定されていない場合、論理 CPU の数が使用されます。
設定ファイルの検索順序
テンプレート 検索順序 と同様に、Hugo にはデフォルトの動作として、Web サイトのソースディレクトリのルートにある設定ファイルを検索するためのデフォルトのルールセットが用意されています。
./hugo.toml./hugo.yaml./hugo.json
設定ファイルでは、Hugo に Web サイトのレンダリング方法を指示したり、Web サイトのメニューを制御したり、プロジェクトに特有のサイト全体のパラメータを任意に定義したりすることが可能です。
設定例
以下は、設定ファイルの典型的な例です。 params: の下にネストされた値は、テンプレート
で使用するために .Site.Params
変数に格納されます。
環境変数で設定する
前述の 3 つの設定オプションに加え、OS の環境変数を使用して設定キー値を定義することができます。
たとえば、以下のコマンドは、Unix 系システムにおいて、Web サイトのタイトルを効果的に設定します。
$ env HUGO_TITLE="Some Title" hugo
これは Netlify のようなサービスを利用してサイトをデプロイする場合にとても便利です。Hugo のドキュメント Netlify 設定ファイル に例があります。
スネークケース 1 の変数名を使っている場合、上記は動作しません。Hugo は HUGO の後の最初の文字で、使用する区切り文字を決定します。これにより、任意の 有効な (allowed)
区切り文字を使用して、HUGOxPARAMSxAPI_KEY=abcdefgh という形式の環境変数を定義することができるようになっています。
レンダリング時にコンテンツとデータ ファイルを無視する
注意: これは動作しますが、より新しく強力な includeFiles および excludeFiles マウント オプションを使用することをお勧めします。
サイトをレンダリングするときに content、data、i18n ディレクトリから特定のファイルを除外するには、ignoreFiles に絶対ファイルパスに対してマッチする 1 つ以上の正規表現を設定します。
.foo や .boo で終わるファイルを無視するには、以下のようにします。
絶対ファイルパスを使ってファイルを無視するには、以下のようにします。
フロントマターを設定する
日付を設定する
Hugo では日付が重要であり、Hugo がコンテンツページにどのように日付を割り当てるか設定できます。これは、hugo.toml に frontmatter セクションを追加することで行います。
デフォルトの設定は以下のとおりです。
たとえば、コンテンツの一部に非標準の日付パラメータがある場合、 date の設定をオーバーライドできます。
:default は、デフォルト設定へのショートカットです。上記の例では、 .Date が存在すれば myDate の日付値を設定し、存在しなければ date、publishDate、lastmod を調べて、最初に有効な日付を選択することになります。
右側のリストで、: で始まる値は特別な意味を持つ日付ハンドラーです (下記参照)。それ以外は、フロントマターの設定にある日付パラメータの名前 (大文字小文字は区別されません) です。 また、Hugo には上記のようなエイリアスがいくつか組み込まれていることに注意してください。たとえば、 lastmod => modified. publishDate => pubdate. published. expiryDate => unpublishdate などです。これを例にとると、フロントマターの日付として pubDate を使用すると、デフォルトで .PublishDate に代入されることになります。
特別な日付ハンドラーは、以下のとおりです。
:fileModTime- コンテンツファイルの最終更新タイムスタンプから日付を取得します。
例:
上記では、まず .Lastmod の値を抽出しようとします。まず フロントマターの lastmod パラメータから始まり、次にコンテンツファイルの変更タイムスタンプを抽出します。最後の :default はここでは必要ありませんが、Hugo は最後に :git、date、そして publishDate の中から有効な日付を探します。
:filename- コンテンツファイルのファイル名から日付を取得します。たとえば、
2018-02-22-mypage.mdとすると、2018-02-22という日付が取り出されます。また、slugが設定されていない場合は、mypageが.Slugの値として使用されます。
例:
上記は、まずファイル名から .Date の値を抽出し、次にフロントマターのパラメータ date、publishDate、最後に lastmod を調べます。
:git- このコンテンツファイルの最終リビジョンの Git 作成日時です。これは、
--enableGitInfoが設定されているか、サイト設定でenableGitInfo = trueが設定されている場合のみ、設定されます。
追加の出力形式を設定する
Hugo v0.20 では、コンテンツを複数の出力形式 (JSON、AMP html、CSV など) にレンダリングする機能が導入されました。これらの値を Hugo プロジェクトの設定ファイルに追加する方法については、「出力形式」 を参照してください。
ミニファイを設定する
デフォルト設定:
ファイルキャッシュを設定する
Hugo 0.52 以降では、cacheDir 以外も設定することができます。以下はデフォルトの設定です。
これらのキャッシュ設定は、あなた自身の hugo.toml でオーバーライドすることができます。
キーワードの説明
:cacheDir- これは
cacheDir設定オプションが設定されている場合の値です (OS 環境変数HUGO_CACHEDIRからも設定できます)。Netlify では/opt/build/cache/hugo_cache/に、それ以外では OS の一時ディレクトリの下にあるhugo_cache_$USERディレクトリにフォールバックします。つまり、Netlify 上でビルドを実行すると、:cacheDirで設定されたすべてのキャッシュが保存され、次のビルドでリストアされます。他の CI ベンダーについては、それぞれのドキュメントを読んでください。CircleCI の例としては、この設定 を参照してください。 :project- 現在の Hugo プロジェクトのベースディレクトリ名です。これは、デフォルトの設定では、すべてのプロジェクトでファイルキャッシュが分離され、
hugo --gcを実行したときに、同じ PC で動作している他の Hugo プロジェクトに関連するファイルに触れないことを意味します。 :resourceDir- これは
resourceDir設定オプションの値です。 - maxAge
- これはキャッシュが削除されるまでの時間で、-1 は永久、0 はキャッシュを削除します。Go の
time.Durationを使用するので、有効な値は"10s"(10秒)、"10m"(10分)、"10h"(10時間) です。 - dir
- このキャッシュのファイルが保存される場所への絶対パス。 許可されている開始プレースホルダーは
:cacheDirと:resourceDir(上記を参照) です。