close
  • 中文
  • Front matter 配置

    这篇文档介绍了如何使用 front matter 来配置页面的各种属性,包括标题、描述、页面类型、导航栏等。

    查看 Front matter 了解什么是 front matter 以及如何使用它,查看 useFrontmatter 了解如何在代码中获取 front matter。

    title

    • 类型string

    页面的标题。默认情况下,页面的 h1 标题将用作 HTML 文档的标题。如果你想使用不同的标题,你可以使用 front matter 来指定页面的标题。例如:

    ---
    title: 我的主页
    ---
    
    这是我的**主页内容**

    它等价于:

    # 我的主页
    
    这是我的**主页内容**

    description

    • 类型string

    页面的自定义描述,会在页面中生成 <meta name="description" content="..." /> 标签用于 SEO 优化。

    默认情况下,Rspress 会提取 h1 标题下方第一段有内容的段落作为描述(参见 markdown.extractDescription)。如果提取结果不满足需求,可以使用此字段覆盖。详情请参阅自定义 Head 标签 - description 的获取方式

    ---
    description: 这是我的主页
    ---

    pageType

    • 类型'home' | 'doc' | 'doc-wide' | 'custom' | 'blank' | '404'
    • 默认值: 'doc'

    页面的类型。默认情况下,页面类型为doc。但是如果你想使用不同的页面类型,你可以使用 pageType 这个 front matter 字段来指定页面类型。例如:

    ---
    pageType: home
    ---

    各个pageType配置的含义如下:

    • home: 首页,包含顶部导航栏和首页的布局内容。
    • doc: 文档页,包含顶部导航栏、左边侧边栏、正文内容和右侧的大纲栏。
    • doc-wide: 宽屏文档页,配合 outline: falsesidebar: false 设置时,正文内容会自动占据更宽的屏幕空间。
    • custom: 自定义页面,包含顶部导航栏和自定义的内容。
    • blank: 也属于自定义页面,但是不包含顶部导航栏
    • 404: 404 页面

    titleSuffix

    • 类型string

    设置页面标题的后缀。未设置 titleSuffix 时,默认使用站点的 title 作为后缀。

    ---
    titleSuffix: '基于 Rsbuild 的静态站点生成器'
    ---

    标题与后缀之间默认使用 - 作为分隔符,你也可以使用 | 进行分隔:

    ---
    titleSuffix: '| 基于 Rsbuild 的静态站点生成器'
    ---
    • 类型boolean | 'placeholder'
    • 默认值true

    是否展示左侧的目录栏。默认情况下,doc 页面会展示左侧的目录栏。但是如果你想隐藏左侧的目录栏,你可以使用以下 front matter 来配置:

    ---
    sidebar: false
    ---
    提示

    sidebar: false 会隐藏侧边栏,并在左侧保留 12vw 的占位,使正文内容在大屏下保持视觉居中。如果你想让正文内容占据更宽的屏幕空间,可以使用 pageType: doc-wide 配合 sidebar: false

    ---
    pageType: doc-wide
    sidebar: false
    ---

    这样正文内容区域会自动扩展,占据原本侧边栏的空间。

    如果你想保留左侧 sidebar 的空白,可以使用 sidebar: 'placeholder'

    ---
    sidebar: 'placeholder'
    ---

    outline

    是否展示右侧的大纲栏。默认情况下,doc 页面会展示右侧的大纲栏。你可以通过下面的配置来隐藏大纲栏:

    ---
    outline: false
    ---
    提示

    outline: false 仅隐藏大纲栏,但原本大纲栏占据的空间仍然保留。如果你想让正文内容占据更宽的屏幕空间,可以使用 pageType: doc-wide 配合 outline: false

    ---
    pageType: doc-wide
    outline: false
    ---

    这样正文内容区域会自动扩展,占据原本大纲栏的空间。

    是否展示文档底部的组件(如上一页/下一页)。默认情况下,doc 页面会展示底部的 footer。你可以通过下面的配置来隐藏 footer:

    ---
    footer: false
    ---

    是否展示顶部导航栏。默认情况下,所有页面都会展示顶部导航栏。但是如果你想隐藏顶部导航栏,你可以使用以下 front matter 来配置:

    ---
    navbar: false
    ---

    context

    • 类型string

    配置后,在生成侧边栏时会在所在的 DOM 节点添加 data-context 属性,值为配置的值。

    foo.mdx
    ---
    context: 'context-foo'
    ---
    bar.mdx
    ---
    context: 'context-bar'
    ---

    最终生成的侧边栏的 DOM 结构缩略如下:

    <div class="rspress-sidebar-group">
      <div className="rspress-sidebar-item" data-context="context-foo"></div>
      <div className="rspress-sidebar-item" data-context="context-bar"></div>
    </div>
    • 类型[string, Record<string, string>][]

    设置为当前页面注入的额外 head 标签,它们将附加在 Rspress 全局注入的 head 标签之后。

    例如,你可以使用这些 headers 为 Open Graph 指定自定义元标签。

    ---
    head:
      - - meta
        - property: og:url
          content: https://example.com/foo/
      - - meta
        - property: og:image
          content: https://example.com/bar.jpg
    # - - [htmlTag]
    #   - [attributeName]: [attributeValue]
    #     [attributeName]: [attributeValue]
    ---

    生成的 head 标签如下:

    <head>
      <meta property="og:url" content="https://example.com/foo/" />
      <meta property="og:image" content="https://example.com/bar.jpg" />
    </head>

    Overview 页相关

    以下配置与 Overview 页 功能相关。

    overview

    • 类型boolean
    • 默认值: false

    在文档页面中启用 Overview 页功能。如果设置为 true,意味着当前页面是 Overview 页。例如:

    ---
    overview: true
    ---

    overviewHeaders

    • 类型number[]
    • 默认值: [2]

    在 Overview 页中展示的标题级别。默认情况下,展示的标题为 h2。但是如果你想展示不同的标题级别,你可以使用 overviewHeaders 这个 front matter 字段来指定。例如:

    ---
    overview: true
    overviewHeaders: []
    ---

    或者

    ---
    overviewHeaders: [2, 3]
    ---

    首页相关

    以下配置与 首页 功能相关。

    hero

    • 类型Object

    home 页面的 hero 配置。它有以下类型:

    interface Hero {
      name: string;
      text: string;
      tagline: string;
      image?: {
        src: string | { dark: string; light: string };
        alt: string;
        /**
         * `srcset` 和 `sizes` 同 `<img>` 的同名属性,取值请参考 https://mdn.io/srcset。
         * 值为数组时,rspress 将使用逗号将其合并为字符串。
         **/
        srcset?: string | string[];
        sizes?: string | string[];
      };
      actions: {
        text: string;
        link: string;
        theme: 'brand' | 'alt';
      }[];
    }

    例如,你可以使用以下 front matter 来指定页面的 hero config:

    ---
    pageType: home
    
    hero:
      name: Rspress
      text: 文档工程解决方案
      tagline: 现代化文档开发技术栈
      actions:
        - theme: brand
          text: 介绍
          link: /zh/guide/introduction
        - theme: alt
          text: 快速开始
          link: /zh/guide/getting-started
    ---

    在设置 hero.text 时,你可以使用 YAML 的 | 符号来手动控制换行:

    ---
    pageType: home
    
    hero:
      name: Rspress
      text: |
        文档工程
        解决方案

    或者你也可以用 HTML 来指定页面的 hero config:

    ---
    pageType: home
    
    hero:
      name: <span class="hero-name">Rspress</span>
      text: <span class="hero-text">文档工程解决方案</span>
      tagline: <span class="hero-tagline">现代化文档开发技术栈</span>
      actions:
        - theme: brand
          text: <span class="hero-actions-text">介绍</span>
          link: /zh/guide/introduction
        - theme: alt
          text: <span class="hero-actions-text">快速开始</span>
          link: /zh/guide/getting-started
    ---

    features

    • 类型Array
    • 默认值: []

    home 页面的功能配置。它有以下类型:

    interface Feature {
      title: string;
      details: string;
      icon: string;
      // 卡片栅格的长度,目前仅支持[3, 4, 6]
      span?: number;
      // feature 卡片跳转链接,选填
      link?: string;
    }
    
    export type Features = Feature[];

    例如,你可以使用以下内容来指定 home 页面的 features 配置:

    ---
    pageType: home
    
    features:
      - title: 'MDX: 使用灵活语法编写内容'
        details: MDX 是一种强大的内容编写方式,你可以在 Markdown 中使用 React 组件。
        icon: 📦
      - title: '功能丰富: 一站式解决方案'
        details: 对全文搜索、国际化等常见功能可以做到开箱即用。
        icon: 🎨
      - title: '扩展性强: 提供多种自定义能力'
        details: 通过其扩展机制,你可以轻松地扩展主题 UI 和构建能力。
        icon: 🚀
    ---