Color mode

Search notes

Filter with tag:, lang:, or path:.

フォルダーページ(Folder Page)

単一のファイルではなくフォルダーを表すページで、folder-pagesプラグインが扱います。ディレクトリにエントリと公開URLを与えつつ、配下のページはそれぞれのパスを保ちます。

何をするか

indexノートを持つフォルダーは、そのフォルダーのURLにあるページになります。配下のページはそのフォルダーの下で引き続き参照できます。これにより、ディレクトリをランディングページとして使えます。

URL

フォルダーページは自身のパーマリンクを持ちます。配下のページもそれぞれのパーマリンクを保つため、フォルダーがツリーを平坦化することはありません。

folder-pagesプラグイン

フォルダーページはfolder-pagesプラグイン(packages/plugins/folder-pages/src/folder_pages.ts)が構築します。buildFolderPages関数はContentManifestを受け取り、FolderPagesModelを生成します。これにはpaths(生成されたフォルダーページのURL)とbyPath(パス名からFolderPageへのマップ)が含まれます。

主な動作:

  • indexまたはREADMEノートを持つフォルダーは、そのフォルダーのURLにあるページになります
  • フォルダーの配下のページはそれぞれのパーマリンクを保ち、フォルダーページの下に平坦化されません
  • isNavigableのチェックが、オーナーの有無、ルーティング対象のページ、一覧に載るサブフォルダーに基づいて、フォルダーにページを生成するかを決めます
  • 生成されたパスは@riebeckite/coreのresolveGeneratedFolderLocationが解決します
ts
// From packages/plugins/folder-pages/src/types.ts
export type FolderPagesModel = {
  paths: string[];
  byPath: Map<string, FolderPage>;
};
 
export type FolderPage = {
  folder: string;
  pathname: string;
  language?: string;
  title: string;
  pages: FolderPageLink[];
  folders: FolderPageLink[];
  dependencies: OutputDependency[];
};

オーナーのいないフォルダー(indexノートがないフォルダー)でも、ルーティング対象のページや一覧に載るサブフォルダーがあればページが生成されます。