Введение
Rspress — это генератор статических сайтов на базе Rsbuild, использующий для рендеринга фреймворк React. Он поставляется с готовой темой для документации, благодаря чему вы можете буквально за несколько минут создать полноценный сайт документации. При этом вы можете кастомизировать тему под свои нужды — например, сделать блог, лендинг продукта и т. д. Конечно, подключив официальные плагины, вы также легко сможете собрать документацию для библиотеки компонентов.
Почему Rspress
Rspress создавался с акцентом на следующие ключевые возможности:
- Производительность сборки. Быстрый запуск разработки — залог приятного опыта.
- Нативно для ИИ. Техническая документация предназначена не только для чтения людьми, но и может быть лучше понята и использована искусственным интеллектом благодаря SSG-MD.
- Тема и кастомизация. совершенно новая тема по умолчанию с несколькими уровнями кастомизации, включая CSS-переменные, BEM-имена классов, переэкспорт и извлечение.
- Поддержка MDX. Благодаря MDX можно удобно переиспользовать фрагменты документов и встраивать в них любые React-компоненты.
- Удобство написания документации. Постоянные улучшения для создания контента с метаданными навигации, блоками кода и проверкой битых ссылок.
- Базовый функционал сайта документации. Встроенная интернационализация, поддержка нескольких версий, полнотекстовый поиск, документация компонентных библиотек и многое другое.
- Расширяемость. Встроенная система плагинов и API для расширения возможностей Rspress.
Именно эти аспекты являются основными требованиями к современным статическим сайтам. Далее мы рассмотрим их подробнее.
Производительность сборки
По мере роста проекта всё чаще возникает проблема долгого запуска dev-сервера, что заметно ухудшает процесс разработки. Чем дольше длится разработка проекта, тем сильнее это ощущается.
Мы задались вопросом: можно ли выйти за рамки существующих инструментов сообщества, пробить бутылочное горлышко текущих SSG-фреймворков и добиться практически мгновенного старта в большинстве сценариев?
Мы продолжили исследования в этом направлении и в итоге добились такого результата в Rspress.
Rspress достигает высокой производительности благодаря множеству стратегий оптимизации:
lazyCompilation. В режиме разработкиlazyCompilationвыполняет компиляцию по требованию. Страницы компилируются только тогда, когда вы их посещаете, что существенно ускоряет запуск в процессе разработки и позволяет достичь холодного старта на уровне миллисекунд.- Предварительная загрузка маршрутов. При наведении на ссылки Rspress заранее подгружает ресурсы целевого маршрута, что в сочетании с
lazyCompilationобеспечивает мгновенный отклик при разработке. - Постоянный кэш. При сборке в продакшен-режиме постоянный кэш включён по умолчанию. Он позволяет повторно использовать результаты предыдущих компиляций при «тёплых» запусках, ускоряя процесс сборки на 30–60%.
- Бандлер Rspack. Rspress использует разработанный нашей командой бандлер Rspack. Rspack — это бандлер, написанный на Rust, со встроенными множественными методами оптимизации производительности, такими как многопоточная параллельная компиляция, инкрементальная компиляция и др. Он в 5–10 раз эффективнее традиционных инструментов сборки, существующих в сообществе.
При этом внутри Rspress также применяется множество других методов оптимизации сборки. Все эти оптимизации в сочетании с мощным фронтенд-инструментарием на Rust выводят производительность компиляции SSG-фреймворка на совершенно новый уровень.
Нативно для ИИ
С развитием больших языковых моделей техническая документация должна служить не только людям, но и быть лучше понятой и использованной искусственным интеллектом.
Rspress предоставляет возможность SSG-MD, которая рендерит страницы в виде Markdown-файлов вместо HTML и генерирует индексные файлы, соответствующие спецификации llms.txt.
После включения в выходных данных сборки будут созданы:
llms.txt(индексный файл, содержащий заголовки страниц и описания в порядке навигации и боковой панели),llms-full.txt(полный файл, содержащий Markdown-контент всех страниц),- а также файлы
.md, соответствующие каждому маршруту.
Для кастомных компонентов можно также использовать import.meta.env.SSG_MD для вывода обычного текста, дружелюбного к ИИ, в режиме SSG-MD, что позволяет сочетать интерактивный UX с более качественной статической информацией.
Подобно тому, как SSG генерирует статические HTML-файлы для улучшения SEO, SSG-MD позволяет относительно улучшить GEO (Generative Engine Optimization) и качество статической информации для больших языковых моделей.
Подробное описание использования смотрите в документации SSG-MD.
Помимо производительности сборки и возможностей для ИИ, Rspress также предоставляет тему по умолчанию, автоматическую генерацию макета, подсветку кода Shiki, интернационализацию, документацию нескольких версий, полнотекстовый поиск и систему плагинов. Далее эти возможности рассматриваются подробнее.
Тема по умолчанию и кастомизация
Rspress предоставляет хорошо продуманную тему по умолчанию с сильным опытом чтения и высокой степенью кастомизации.
Кастомизация темы
Тема по умолчанию содержит дополнительные CSS-переменные для цветов темы, блоков кода, компонентов главной страницы и многого другого. Все встроенные компоненты также следуют соглашению об именовании BEM, что упрощает переопределение стилей стандартными CSS-селекторами. Если CSS недостаточно, можно пойти глубже, переопределив встроенные компоненты через ESM-переэкспорт в theme/index.tsx.
Команда rspress eject
Когда возможностей CSS-переменных недостаточно для ваших задач кастомизации, вы можете использовать команду rspress eject. Она копирует исходный код встроенных компонентов в директорию темы вашего проекта, позволяя выполнять полную кастомизацию.
Теги навигационной панели и бокового меню
Rspress предоставляет компонент Tag. Вы можете определить tag в метаданных и отображать эти аннотации в заголовках, навигационной панели, боковом меню и оглавлении.
Автоматическая генерация структуры сайта
При создании сайта документации помимо основного контента обычно нужны следующие элементы интерфейса:
- Навигационная панель — глобальное меню сайта.
- Боковое меню (сайдбар) — оглавление раздела.
- Оглавление текущей страницы — структура заголовков статьи.
Оглавление страницы Rspress формирует полностью автоматически: извлекает все заголовки из документа, строит дерево и по умолчанию показывает его справа от текста — никаких дополнительных действий не требуется.
Для навигационной панели и бокового меню предусмотрено два способа настройки (выбирайте любой):
- Декларативная конфигурация — размещение файла
_meta.jsonв нужных папках. Пример:
Подробности настройки можно найти в разделе Автонавигация.
В большинстве случаев мы рекомендуем декларативную конфигурацию — она даёт несколько важных преимуществ:
- Конфигурация получается лаконичнее и понятнее.
- Структура папок на диске полностью соответствует структуре бокового меню — всё интуитивно понятно.
- При добавлении/удалении пунктов меню достаточно работать прямо в нужной папке, а не лезть каждый раз в
rspress.config.ts, искать нужное место и править там — это сильно снижает переключение контекста.
Программная конфигурация незаменима, когда нужно генерировать навигацию динамически. Например, официальный плагин Rspress TypeDoc автоматически преобразует JSON от TypeDoc в готовые nav и sidebar.
Поддержка MDX
MDX — мощный формат для создания контента. Вы пишете обычный Markdown, но при этом можете прямо внутри него использовать любые React-компоненты:
Кроме того, Rspress поддерживает несколько специальных синтаксисов:
- Кастомные контейнеры.
- Метаданные страницы.
- Подсветка строк кода.
Подробности — в разделе Использование MDX.
Подсветка кода с помощью Shiki
Rspress по умолчанию использует Shiki для подсветки кода. В отличие от решений с подсветкой во время выполнения, Shiki выполняет подсветку на этапе компиляции, обеспечивая точную подсветку синтаксиса, полностью совместимую с VS Code, на основе грамматик TextMate — без дополнительной нагрузки во время выполнения и без увеличения размера бандла.
Цветовые схемы блоков кода можно настраивать через CSS-переменные, а также интерактивно переключать и просматривать различные темы Shiki на странице CSS-переменные.
Shiki также поддерживает расширения через пользовательские трансформеры, что позволяет обогащать текст, например, с помощью twoslash.
Удобство написания документации
Rspress также предоставляет более полный опыт создания контента:
- Проверка битых ссылок включена по умолчанию и обнаруживает неверные ссылки во время сборки.
- Блоки кода из файлов поддерживают
file="./path/to/file", чтобы примеры могли находиться в отдельных исходных файлах. - Плагин
previewтеперь использует конфигурацию на основе метаданных и лучше работает с блоками кода из файлов. previewиplaygroundтеперь можно включить вместе для документации компонентов и интерактивных примеров.
Конкретные примеры preview и playground см. в разделе Документация компонентов ниже.
SSG (статическая генерация)
Rspress — это SSG-фреймворк. При продакшен-сборке он автоматически генерирует полностью статический сайт: для каждой страницы создаётся готовый HTML-файл. После завершения сборки эти файлы появляются в папке вывода.
Готовую папку можно развернуть на любом статическом хостинге: GitHub Pages, Netlify, Vercel и т. д.
При необходимости HTML легко кастомизировать — см. Генерация статического сайта.
Интернационализация (i18n)
Интернационализация — частое требование для сайтов документации. В Rspress она реализована максимально просто и удобно. Мы свели все задачи i18n к четырём вопросам:
- Где хранить переводы?
- Как настроить сайт для разных языков?
- Как организовать папки с разными языковыми версиями?
- Как использовать переводы в собственных компонентах?
Rspress включает встроенные переводы для китайского, английского, японского, корейского и других языков, и в будущем их станет ещё больше. Система автоматически выполняет «Tree Shaking» («встряхивание дерева») на основе конфигурации языка и использования, включая в сборку только необходимый текст. Вы также можете легко расширять или переопределять переводы с помощью опции i18nSource.
Вы можете следовать руководству по I18n, чтобы пошагово реализовать интернационализацию для вашего сайта.
Документация нескольких версий
Иногда нужно вести документацию для разных версий продукта. В Rspress поддержка мультиверсионности встроена и включается парой строк конфигурации. При этом структура папок остаётся привычной — никаких вложенностей и новых понятий, без лишних сложностей:
Полнотекстовый поиск
Rspress предоставляет полнотекстовый поиск «из коробки» — без единой строки конфигурации. Он построен на открытом движке FlexSearch и работает так:
Кастомизация темы
Rspress поддерживает два способа настройки темы:
- Расширение стандартной темы. Во всех компонентах дефолтной темы предусмотрены слоты, через которые можно добавить собственные элементы интерфейса. Пример:
- Полностью настраиваемая тема. Если нужно написать тему с нуля, вы можете переопределить компонент
Layoutи использовать предоставляемые Rspress Runtime API (например,usePageData), чтобы получать данные страницы, информацию о маршрутах и т. д.
Подробно о кастомизации темы — в разделе Кастомная тема.
Система плагинов
Система плагинов — одна из ключевых возможностей Rspress. Она позволяет легко расширять функциональность при сборке сайта. Подробности — в разделе Введение в плагины.
Документация компонентов
Rspress предоставляет предпросмотр компонентов и редактирование в реальном времени через @rspress/plugin-preview и @rspress/plugin-playground, что хорошо подходит для документации библиотек компонентов и интерактивных примеров.
Предпросмотр демо библиотеки компонентов
Используйте синтаксис ```tsx preview в mdx-файлах:
Результат рендеринга выглядит следующим образом:
Счётчик: 0
Если вы предпочитаете хранить код демо во внешних файлах, вы можете объединить его с блоками кода из файлов. Подробности см. в @rspress/plugin-preview.
Интерактивная площадка для библиотеки компонентов
Используйте синтаксис ```tsx playground в mdx-файлах:
Результат рендеринга выглядит следующим образом:
Для режима предпросмотра iframe, направления макета и объединения с preview см. @rspress/plugin-playground.
Чем Rspress отличается от других SSG-фреймворков
Отличия от Docusaurus
Docusaurus — открытый SSG-фреймворк от Meta. Как и Rspress, он использует React и поддерживает MDX. Основные отличия:
-
Rspress обеспечивает лучшую производительность сборки благодаря ленивой компиляции и постоянному кэшу, позволяя запускать проект почти мгновенно (холодный старт за миллисекунды). Подробности см. в разделе Производительность сборки.
-
У Rspress проще конфигурация и ниже порог входа. Мы стараемся не вводить лишних концепций и максимально снизить когнитивную нагрузку. Например, поиск работает «из коробки», мультиверсионность интуитивна и т. д.
-
Rspress предоставляет более высокоуровневую абстракцию над бандлером. Конфиги webpack/Rspack сложны и запутанны. Docusaurus передаёт их напрямую пользователю, а Rspress скрывает низкоуровневые детали и предлагает удобные обёртки. Например, добавить теги в
<head>можно одной строкойbuilderConfig.html.tags, без подключенияhtml-webpack-pluginи прочих плагинов.
Отличия от Nextra
Nextra — открытый SSG-фреймворк от Vercel. Он тоже построен на React и поддерживает MDX. Главные отличия:
- У Rspress выше производительность сборки (см. отличия от Docusaurus).
- Rspress легче и «чище». Nextra построен поверх Next.js, поэтому даже в режиме SSG генерирует не только HTML, но и runtime-код Next.js. В результате размер выходных файлов больше, а деплоить нужно как приложение (
next start), а не как чистую статику. Rspress не привязан к какому-либо фреймворку — выводит лёгкие чистые HTML-файлы, которые можно развернуть где угодно.
Отличия от VitePress
VitePress — генератор статических сайтов на базе Vite, использует Vue и обладает отличной производительностью. Основные отличия:
- Rspress использует React, VitePress — Vue.
- Rspress работает с MDX, VitePress — с обычным Markdown + Vue-компонентами внутри. Это приводит к разным цепочкам компиляции.
- На этапе разработки оба стартуют очень быстро. Но в продакшене VitePress использует Rollup для бандлинга, поэтому сталкивается с типичными ограничениями JS-инструментов. Rspress на основе Rspack (Rust) собирает продакшен-сборку ощутимо быстрее.
Попробуйте Rspress
Перейдите в раздел Быстрый старт, чтобы за несколько минут собрать свой первый сайт документации.

