設定

_config.ymlまたは代替設定ファイルでサイトの設定を変更できます。

サイト

設定 説明
title ウェブサイトのタイトル
subtitle ウェブサイトのサブタイトル
description ウェブサイトの説明
keywords ウェブサイトのキーワード。複数の値をサポート。
author あなたの名前
language ウェブサイトの言語。2文字のISO-639-1コードまたはそのバリアントを使用。デフォルトはen
timezone ウェブサイトのタイムゾーン。デフォルトではコンピューターの設定を使用。利用可能なタイムゾーンのリストはこちら。例えばAmerica/New_YorkJapanUTCなど。

URL

設定 説明 デフォルト
url ウェブサイトのURL。http://またはhttps://で始まる必要があります。
root ウェブサイトのルートディレクトリ urlのパス名
permalink 記事のパーマリンク形式 :year/:month/:day/:title/
permalink_defaults パーマリンクの各セグメントのデフォルト値
pretty_urls permalink変数をプリティURLに書き換え
pretty_urls.trailing_index 末尾のindex.htmlを削除する場合はfalseに設定 true
pretty_urls.trailing_html 末尾の.htmlを削除する場合はfalseに設定(index.htmlの末尾には適用されない) true
サブディレクトリ内のウェブサイト

ウェブサイトがサブディレクトリ内にある場合(例: http://example.org/blog)は、urlhttp://example.org/blogを設定し、root/blog/に設定します。

例:

# 例: page.permalinkがhttp://example.com/foo/bar/index.htmlの場合
pretty_urls:
trailing_index: false
# http://example.com/foo/bar/ になります

ディレクトリ

設定 説明 デフォルト
source_dir ソースフォルダ。コンテンツが保存される場所 source
public_dir パブリックフォルダ。静的サイトが生成される場所 public
tag_dir タグディレクトリ tags
archive_dir アーカイブディレクトリ archives
category_dir カテゴリディレクトリ categories
code_dir コードを含むディレクトリ(source_dirのサブディレクトリ) downloads/code
i18n_dir i18nディレクトリ :lang
skip_render レンダリングせずにpublicに直接コピーされるパス。パスのマッチングにglob表現を使用できます。

例:

skip_render: "mypage/**/*"
# `source/mypage/index.html` と `source/mypage/code.js` を変更せずに出力します。

## 記事を除外するためにも使用できます。
skip_render: "_posts/test-post.md"
# `source/_posts/test-post.md` を無視します。

執筆

設定 説明 デフォルト
new_post_name 新しい記事のファイル名形式 :title.md
default_layout デフォルトのレイアウト post
titlecase タイトルをタイトルケースに変換するか? false
external_link 外部リンクを新しいタブで開くか?
external_link.enable 外部リンクを新しいタブで開くか? true
external_link.field site全体に適用するか?postのみか? site
external_link.exclude ホスト名を除外。該当する場合はサブドメインを指定、wwwも含む []
filename_case ファイル名を 1小文字; 2大文字 に変換 0
render_drafts 下書きを表示するか? false
post_asset_folder アセットフォルダを有効にするか? false
relative_link リンクをルートフォルダに対して相対的にするか? false
future 未来の記事を表示するか? true
syntax_highlighter コードブロックのシンタックスハイライト設定。使い方はシンタックスハイライトセクションを参照。 highlight.js
highlight コードブロックのシンタックスハイライト設定。使い方はHighlight.jsセクションを参照。
prismjs コードブロックのシンタックスハイライト設定。使い方はPrismJSセクションを参照。

ホームページの設定

設定 説明 デフォルト
index_generator hexo-generator-indexによる記事のアーカイブ生成
index_generator.path ブログのインデックスページのパス ''
index_generator.per_page 1ページあたりの記事数。 10
index_generator.order_by 記事の並び順。デフォルトでは日付降順(新しいものから古いものへ)。 -date
index_generator.pagination_dir URL形式。ページネーション設定を参照。 page

カテゴリー&タグ

設定 説明 デフォルト
default_category デフォルトのカテゴリー uncategorized
category_map カテゴリースラッグを上書き
tag_map タグスラッグを上書き

例:

category_map:
"yesterday's thoughts": yesterdays-thoughts
"C++": c-plus-plus

日付/時刻形式

Hexoは日付の処理にMoment.jsを使用します。

設定 説明 デフォルト
date_format 日付形式 YYYY-MM-DD
time_format 時刻形式 HH:mm:ss
updated_option Front Matterで提供されていない場合に使用するupdatedの値 mtime
updated_option

updated_optionはFront Matterでupdatedが指定されていない場合にupdatedの値を制御します:

  • mtime: updatedとしてファイルの更新日を使用します。これはHexo 3.0.0以降のデフォルトの挙動です。
  • date: updatedとしてdateを使用します。一般的にファイルの変更日が異なる可能性があるGitワークフローで使用されます。
  • empty: updatedが指定されていない場合は単純に削除します。多くののテーマやプラグインと互換性がないかもしれません。

use_date_for_updatedはv7.0.0で削除されました。代わりにupdated_option: 'date'を使用してください。

ページネーション

設定 説明 デフォルト
per_page 各ページに表示される記事の数。0はページネーション無効化 10
pagination_dir URL形式 page

例:

pagination_dir: 'page'
# http://example.com/page/2

pagination_dir: 'awesome-page'
# http://example.com/awesome-page/2

拡張機能

設定 説明
theme テーマ名。falseはテーマを無効にします
theme_config テーマ設定。このキーの配下のカスタムテーマ設定は、テーマのデフォルトを上書きします。
deploy デプロイ設定
meta_generator メタジェネレータタグ。falseはタグの注入を無効にします。

ファイルやフォルダーを含める/除外する

特定のファイルやフォルダーを明示的に処理または無視するために、以下のオプションを使用します。パスの指定にはglob表現が使えます。

includeおよびexcludeオプションはsource/フォルダーにのみ適用され、ignoreオプションはすべてのフォルダーに適用されます。

設定 説明
include 隠しファイル(名前がアンダースコアで始まるファイルやフォルダーを含む、例外あり*)を含める
exclude ファイルやフォルダーを除外
ignore ファイルやフォルダーを無視

例:

# ファイルやフォルダー を 含める/除外する
include:
- ".nojekyll"
# 'source/css/_typing.css'を含める。
- "css/_typing.css"
# 'source/_css/'の全てのファイルを含める。
- "_css/*"
# 'source/_css/'の全てのファイルとサブフォルダーを含める。
- "_css/**/*"

exclude:
# 'source/js/test.js'を除外する。
- "js/test.js"
# 'source/js/'の全てのファイルを除外する。
- "js/*"
# 'source/js/'の全てのファイルとサブフォルダーを除外する。
- "js/**/*"
# 'source/js/'とそのサブフォルダー内でファイル名が'test'で始まる全てのファイルを除外する。
- "js/test*"
# 'source/js/'とそのサブフォルダー内の'test'で始まる全てのファイルを除外する。
- "js/**/test*"
# 'source/_posts/'内の記事の除外にはこの設定は使えません。
# この場合、skip_renderを使用するか、ファイル名にアンダースコアを追加してください。
# - "_posts/hello-world.md" # 効果がありません。

ignore:
# 'foo'という名前の全てのフォルダーを無視する。
- "**/foo"
# 'themes/'内の'foo'フォルダーのみを無視する。
- "**/themes/*/foo"
# 上記と同じですが、'themes/'のすべてのサブフォルダーに適用されます。
- "**/themes/**/foo"

リスト内の値はシングル/ダブルクォートで囲む必要があります。

include:およびexclude:themes/フォルダーには適用されません。代わりにignore:を使用するか、ファイル/フォルダー名にアンダースコアを追加して除外してください。

* source/_postsフォルダーは例外です。このフォルダー内で名前がアンダースコアで始まるファイルやフォルダーは依然として無視されます。ここでinclude:ルールを使用することは推奨されません。

代替設定の使用

hexoコマンドに--configフラグを追加し、代替のYAMLまたはJSON設定ファイルへのパスを指定することで、カスタム設定ファイルパスを指定できます。または、複数のYAMLまたはJSONファイルのカンマ区切りリスト(スペースなし)を指定できます。

# '_config.yml'の代わりに'custom.yml'を使用
$ hexo server --config custom.yml

# 'custom.yml'と'custom2.json'を使用し、'custom2.json'を優先
$ hexo server --config custom.yml,custom2.json

複数のファイルを指定するとすべての設定ファイルが結合され、マージされた設定が_multiconfig.ymlに保存されます。この場合、後に指定された値が優先されます。任意の数のJSONおよびYAMLファイルで、任意の深さのオブジェクトで動作します。リスト内にスペースを含めることはできません

たとえば、上記の例ではcustom.ymlfoo: barが含まれているが、custom2.json"foo": "dinosaur"が含まれている場合、_multiconfig.ymlにはfoo: dinosaurが含まれます。

代替テーマ設定

Hexoテーマは独立したプロジェクトであり、それぞれ別の_config.ymlファイルを持っています。

テーマをフォークしてカスタムバージョンを維持する代わりに、他の場所から設定を行うことができます:

サイトのプライマリ設定ファイル内のtheme_configから

Hexo 2.8.2以降でサポート

# _config.yml
theme: "my-theme"
theme_config:
bio: "My awesome bio"
foo:
bar: 'a'
# themes/my-theme/_config.yml
bio: "Some generic bio"
logo: "a-cool-image.png"
foo:
baz: 'b'

テーマ設定の結果:

{
bio: "My awesome bio",
logo: "a-cool-image.png",
foo: {
bar: "a",
baz: "b"
}
}

専用の_config.[theme].ymlファイルから

Hexo 5.0.0以降でサポート

ファイルはサイトフォルダ内に配置され、ymlおよびjsonがサポートされています。_config.yml内のthemeが設定されている必要があります。

# _config.yml
theme: "my-theme"
# _config.my-theme.yml
bio: "My awesome bio"
foo:
bar: 'a'
# themes/my-theme/_config.yml
bio: "Some generic bio"
logo: "a-cool-image.png"
foo:
baz: 'b'

テーマ設定結果:

{
bio: "My awesome bio",
logo: "a-cool-image.png",
foo: {
bar: "a",
baz: "b"
}
}

テーマ設定を1か所に保存することを強くお勧めします。しかし、テーマ設定を別々に保存する必要がある場合は、それらの設定の優先順位を把握しておく必要があります: マージ中にサイトのプライマリ設定ファイル内のtheme_configが最も高い優先順位で、次に専用のテーマ設定ファイルが続きます。
テーマディレクトリ下の_config.ymlファイルの優先順位は最も低いです。