ドキュメント

命名規則

v2 アーキテクチャにおけるファイル名・クラス名・CSS のルール

← 目次に戻る


ファイル名とクラス名

対象 ファイル名 YAML での指定 コード内の名前
セクションレシピ hero-basic.njk(kebab-case) template: hero-basic ---
エフェクト bg-effect-snow.js(kebab-case) BgEffectSnow(PascalCase) class BgEffectSnow

セクションレシピのファイル名は kebab-case、YAML でも同じ名前で指定します。

エフェクトのファイル名は kebab-case ですが、YAML ではクラス名(PascalCase)で指定します。これにより「ファイル参照」と「クラスのインスタンス化」の違いが明確になります。


エフェクトの命名規則

背景エフェクトには接頭辞 BgEffect を付けます。

BgEffect + 名前
例: BgEffectSnow, BgEffectAurora, BgEffectFirefly

ファイル名は対応する kebab-case にします。

BgEffectSnow         → bg-effect-snow.js
BgEffectCherryBlossom → bg-effect-cherry-blossom.js

CSS クラス命名

テンプレート名をプレフィックスに使い、BEM 風で命名します。

/* hero-basic.css */
.hero-basic { }              /* ルート */
.hero-basic__title { }       /* 子要素 */
.hero-basic__lead { }        /* 子要素 */
.hero-basic__inner { }       /* 子要素 */
/* card-grid-basic.css */
.card-grid-basic { }
.card-grid-basic__card { }
.card-grid-basic__title { }

なぜテンプレート名をプレフィックスにするのか

複数のレシピが同じページに配置されてもクラス名が衝突しないためです。

NG: .title, .card, .item     汎用的すぎて衝突する
OK: .hero-basic__title       テンプレート固有なので安全

ディレクトリ名

_sections/     セクションテンプレート(.njk + .css)
_effects/      エフェクト(.js)
_includes/     レイアウト
_data/         データファイル

いずれもアンダースコアで始まります。Eleventy はこれらをページとして処理しません。


.md ファイルのルール

.md ファイルは必ず index.md とし、ディレクトリで URL を構成します。

OK:  about/index.md     → /about/
NG:  about.md            → 使用不可

前のページ: ← CLI ツール | ↑ 目次