Автонавигация
В Rspress можно либо объявить nav и sidebar в файле конфигурации, либо автоматически сгенерировать их из файлов _nav.json и _meta.json. Мы рекомендуем второй вариант, поскольку он позволяет сохранить файл конфигурации компактным, поддерживает HMR и при этом делает всё доступным через themeConfig.
Автоматическая генерация навигационной и боковой панелей работает только в том случае, если в rspress.config.ts не определены nav или sidebar.
Базовое использование
Rspress генерирует навигационную панель из _nav.json, а боковую панель — из _meta.json. Файл _nav.json, определяющий навигационную панель, располагается в корне директории документации, а файлы _meta.json, определяющие боковую панель, — в её подкаталогах. Например:
Если ваш сайт использует i18n, разместите файл _nav.json, определяющий навигационную панель, в каталоге каждой локали:
Использование глобальной боковой панели
По умолчанию (когда в корне существует только _nav.json) Rspress генерирует отдельную боковую панель для каждого подкаталога. Боковая панель переключается автоматически в зависимости от активного элемента навигации. Например, при нажатии на элемент навигации «Руководство» отображается боковая панель руководства, а при нажатии на «API» — боковая панель API:
Если вы хотите, чтобы все страницы использовали единую глобальную боковую панель вместо переключения по навигации, вы можете добавить файл _meta.json на корневом уровне директории docs (рядом с _nav.json).
Этот подход лучше работает для сайтов документации с меньшим количеством пунктов навигации и более простой структурой. Поскольку боковая панель остаётся одинаковой независимо от того, какой пункт навигации активен, это хорошее решение, когда вы хотите организовать весь сайт под одной единой боковой панелью:
Когда в корне проекта существует файл _meta.json, Rspress будет генерировать единую боковую панель (с ключом '/') для всех страниц, независимо от того, какой пункт навигации активен. Корневой _meta.json служит точкой входа для всего дерева боковой панели, и вы обычно можете организовывать поддиректории с помощью заголовков разделов:
Подсказки типов по JSON-схеме
Для улучшения редактирования _nav.json и _meta.json Rspress предоставляет две схемы для подсказок в IDE: @rspress/core/meta-json-schema.json и @rspress/core/nav-json-schema.json.
Например, в VS Code можно добавить следующую настройку в файл .vscode/settings.json:
Настройка навигации
В файле _nav.json указывается массив элементов. Его структура и тип полностью совпадают с конфигурацией nav стандартной темы. Подробности — в разделе конфигурация nav. Например:
Настройка сайдбара
В файле _meta.json указывается массив элементов, каждый из которых имеет следующий тип:
file
- Если элемент является
string, он представляет файл. Строка — это имя файла:
Имя файла может содержать расширение или быть без него. Например, introduction будет распознано как introduction.mdx.
- Если элемент является объектом, он может описывать файл, директорию или пользовательскую ссылку.
Чтобы описать файл, используйте следующий тип:
name— имя файла с расширением или без негоlabel— отображаемое название файла в боковой панели. Еслиlabelне указано, Rspress автоматически использует заголовок H1 документаoverviewHeaders— управляет тем, какие заголовки отображаются на обзорной странице файла; это необязательный параметр, по умолчанию[2]context— добавляет атрибутdata-contextк сгенерированному DOM-узлу боковой панели; это необязательный параметр и по умолчанию не используется
Например:
dir
Чтобы описать директорию, используйте следующий тип:
name— имя директорииlabel— отображаемое название директории в боковой панелиcollapsible— управляет возможностью сворачивания директорииcollapsed— задаёт, свернута ли она по умолчанию —overviewHeaders— управляет тем, какие заголовки отображаются на обзорных страницах файлов внутри этой директории; это необязательный параметр, по умолчанию[2]—context— добавляет атрибутdata-contextк сгенерированному DOM-узлу боковой панели; он необязательный и используется по умолчанию
Например:
Чтобы отображать документ при клике на директорию в боковой панели, создайте файл index.mdx внутри этой директории. Например:
Эта боковая панель содержит только документ getting-started. Когда пользователь кликает на директорию Guide, Rspress отображает содержимое index.mdx.
dir-section-header Новинка
При описании директории также можно использовать dir-section-header. Он ведёт себя как "type": "dir", но отображается в интерфейсе иначе. Его часто используют на первом уровне, где заголовок директории отображается как заголовок раздела на одном уровне с файлами внутри директории.
Тип:
divider
Чтобы описать разделитель, используйте следующий тип:
Если dashed установлено в true, линия разделителя будет пунктирной, иначе — сплошной.
section-header
Чтобы описать заголовок раздела, используйте следующий тип:
Здесь label — отображаемое название заголовка раздела в боковой панели. Например:
Заголовки секций упрощают группировку документов и директорий в боковой панели. Их можно комбинировать с divider, чтобы более явно разделять группы:
custom-link
Чтобы описать пользовательскую ссылку, используйте следующий тип:
Здесь link — целевая ссылка, а label — отображаемое название в боковой панели. Например:
Поле link поддерживает внешние ссылки, например:
Также можно использовать поле items, чтобы создать вложенные произвольные ссылки, например:
Полный пример
Вот полный пример с использованием трёх перечисленных выше типов ссылок:
Использование без конфигурации
В некоторых директориях можно не использовать _meta.json и позволить Rspress автоматически сгенерировать боковую панель. Это работает, если директория содержит только документы, без поддиректорий, и не требуется настраивать порядок документов. Например:
В директории guide настройте _meta.json следующим образом:
В директории basic можно не использовать _meta.json; в этом случае Rspress автоматически создаст боковую панель и отсортирует файлы по алфавиту. Чтобы настроить порядок, добавьте числовые префиксы к именам файлов:
Настройка элементов файлов с помощью метаданных
Большинство параметров отображения автоматически сгенерированных элементов файлов можно задать в блоке метаданных страницы: title, icon, tag, overviewHeaders и context.
Структурные параметры следует хранить в _meta.json, включая порядок элементов, type, name, группы каталогов, заголовки секций, пользовательские ссылки, collapsible и collapsed. Для метаданных, относящихся к конкретной странице, рекомендуется использовать метаданные, чтобы содержимое и его представление в боковой панели находились в одном месте.
Например, _meta.json может определять, какие файлы отображаются и в каком порядке:
Затем настройте параметры отображения элемента файла в метаданных страницы:
Если для одного и того же элемента файла одно и то же поле задано в обоих местах, для полей icon, tag, overviewHeaders и context приоритет имеет frontmatter, а для заголовка страницы приоритет имеет label из _meta.json. Для группы каталогов приоритет имеет _meta.json по сравнению с метаданными из её индексной страницы.
Значки и метки боковой панели
Используйте icon, чтобы добавить значок перед заголовком в боковой панели. Рекомендуемый и наиболее распространённый способ — поместить изображение в каталог public и указать его через абсолютный путь.
Например, поместите локальное изображение в docs/public/icon.png, а затем укажите его в _meta.json:
Вы также можете указать встроенную строку SVG, если хотите встроить значок непосредственно в конфигурацию:
Также поддерживаются эмодзи, внешние URL-адреса и data URL. Существующая настройка tag по-прежнему отображается после заголовка.
Подробную информацию о tag см. в разделе Компонент Tag.

