Кастомная тема
Если вы используете ИИ-агента для программирования, установите навык rspress-custom-theme, чтобы он мог помочь вам сгенерировать новую тему с нуля.
Дополнительную информацию о разработке с помощью ИИ в Rspress см. на странице ИИ.
-
Для CSS Rspress предоставляет CSS-переменные и BEM-классы для настройки.
-
Для JS / React Rspress предоставляет runtime-интерфейс на основе повторного экспорта ESM, позволяющий изменять или заменять встроенные компоненты: главную страницу, боковую панель, компоненты поиска и многое другое.
На этой основе существуют два режима:
- wrap: Обернуть и расширить встроенные компоненты Rspress с помощью пропсов или слотов.
- eject: Полностью переопределить компонент. Для этого можно использовать команду
rspress eject, чтобы скопировать исходный код локально и изменить его напрямую.
В следующих разделах эти подходы рассматриваются от наиболее простых до наиболее глубоких способов настройки.
CSS-переменные
Rspress предоставляет набор часто используемых CSS-переменных. По сравнению с переопределением встроенных React-компонентов, изменение CSS-переменных проще и легче в сопровождении. Ознакомиться с ними можно на странице UI - CSS-переменные, после чего переопределить их следующим образом:
Другой подход — использовать конфигурацию globalStyles в файле rspress.config.ts:
BEM-классы
Все встроенные компоненты Rspress используют соглашение об именовании BEM. Вы можете использовать эти имена классов для переопределения стилей, аналогично CSS-переменным.
Например:
Переопределение встроенных компонентов с использованием повторного экспорта ESM
Создайте директорию theme в корне проекта, затем создайте в ней файл index.ts или index.tsx для экспорта компонентов темы.
Вы можете написать файл theme/index.tsx, используя встроенные компоненты из @rspress/core/theme-original:
Когда вы переопределяете встроенные компоненты с помощью повторного экспорта ESM, внутренние ссылки Rspress на эти компоненты в первую очередь используют вашу переопределённую версию.
@rspress/core/theme-original позволяет избежать циклических зависимостей. Используйте его только при настройке темы.
-
В директории
docsиспользуйте@rspress/core/theme, который указывает на вашtheme/index.tsx. -
В директории
themeиспользуйте@rspress/core/theme-original, который всегда указывает на встроенные компоненты темы Rspress.
Wrap: Передача пропсов и слотов
Обёртывание означает добавление пропсов к повторно экспортируемым компонентам. Ниже приведён пример, который вставляет содержимое перед заголовком навигационной панели:
Компонент Layout разработан с использованием ряда слот-пропсов, специально предназначенных для обёртки. Вы можете использовать эти пропсы для расширения макета темы по умолчанию:
Eject: Полное переопределение компонента
Извлечение означает полную замену встроенного компонента Rspress собственной реализацией. Для этого Rspress предоставляет команду rspress eject [component], которая копирует исходный код встроенного компонента в локальный проект, чтобы его можно было изменять напрямую.
-
Выполните CLI-команду. Rspress скопирует исходный код указанного компонента в локальную директорию
theme/components, не извлекая его зависимости. -
Обновите re-export в
theme/index.tsx:
- Измените файл
theme/components/DocFooter.tsxпо мере необходимости, чтобы удовлетворить вашим требованиям.
Компоненты Rspress разделены на небольшие независимые части, чтобы сделать извлечение более удобным. Список компонентов, которые можно извлечь, см. в разделе Компоненты макета.
Извлечение увеличивает затраты на сопровождение. При обновлении Rspress извлечённые компоненты не обновляются автоматически, поэтому изменения нужно сравнивать и вносить вручную.
Сначала проверьте, достаточно ли вам обёртывания. Используйте извлечение только в тех случаях, когда обёртывания недостаточно.

