@rspress/plugin-preview
Предпросмотр компонентов из блоков кода в файлах MDX. Это полезно для документации библиотек компонентов.
Установка
Использование
1. Установка плагина
Сначала добавьте следующую конфигурацию:
2. Использование в MDX-файлах
В MDX-файлах используйте синтаксис ```tsx preview:
Это отображается следующим образом:
Счётчик: 0
- На данный момент работает только в файлах
.mdx. - Экспортируйте компонент как
default(экспорт по умолчанию), и Rspress отрендерит его автоматически.
3. Вынос кода компонента в отдельные файлы (не обязательно)
Вместо того чтобы писать код компонента прямо в блоке кода MDX, можно использовать его вместе с блоком кода из файла и хранить примеры кода в отдельных файлах.
Это отображается следующим образом:
Счётчик: 0
Использование режима предпросмотра iframe
Этот плагин поддерживает несколько режимов предпросмотра. Переключаться между ними можно, изменяя мета-информацию preview="...". Например, ```tsx preview="iframe-follow" переключает в режим iframe-follow.
```tsx preview эквивалентно ```tsx preview="{defaultPreviewMode}", значение определяется параметром defaultPreviewMode.
Режим предпросмотра iframe имеет отдельные среды компиляции и выполнения.
-
Отдельное окружение сборки: пример кода в блоке кода компилируется как точка входа отдельным экземпляром Rsbuild, что позволяет внедрять переменные Sass/Less и другую конфигурацию.
-
Отдельное окружение выполнения: исключаются конфликты стилей с сайтом документации, а библиотека компонентов может загружать собственный
base.css.
preview="internal"
"internal" — режим предпросмотра по умолчанию, при котором компонент рендерится непосредственно внутри документа.
Синтаксис:
или
Отобразится так:
Счётчик: 0
preview="iframe-follow"
Этот режим отображает область предпросмотра iframe справа от блока кода, следуя потоку содержимого.
Синтаксис:
Отобразится так:
preview="iframe-fixed"
Этот режим отображает фиксированную область предпросмотра iframe справа на странице, идеально подходит для документации мобильных библиотек компонентов.
Синтаксис:
Отобразится так:

Вы можете внедрить глобальные скрипты или стили в окружение предварительного просмотра iframe, используя iframeOptions.builderConfig.source.preEntry. Вот несколько распространённых случаев использования:
-
Эмуляция сенсорных событий для мобильных устройств: Эмулируйте мобильные сенсорные события на ПК, импортировав @vant/touch-emulator.
-
Обработка тёмного режима: Внедрите
MutationObserverдля отслеживания изменений классаhtml.dark, затем синхронизируйте сbody.darkили выполните другую обработку тёмного режима. -
Использование Tailwind CSS: Поскольку среда предпросмотра в iframe — это отдельный экземпляр Rsbuild, если ваши компоненты, отображаемые в предпросмотре, зависят от Tailwind CSS v4, настройте
@rsbuild/plugin-tailwindcssвiframeOptions.builderConfig.pluginsи внедрите вашу точку входа Tailwind CSS черезpreEntry.
Опции
Этот плагин принимает объект конфигурации со следующей типизацией:
defaultRenderMode
- Тип:
'pure' | 'preview' - По умолчанию:
'pure'
Определяет поведение по умолчанию для блоков кода, в которых явно не указаны pure или preview.
Не рекомендуется изменять значение по умолчанию, поскольку это может повлиять на совместное использование с @rspress/plugin-playground.
```tsx pure— рендерится как обычный блок кода```tsx— рендерится согласно настройкеdefaultRenderMode```tsx preview— рендерится как блок кода с предпросмотром компонента
defaultPreviewMode
- Тип:
'internal' | 'iframe-follow' | 'iframe-fixed' - По умолчанию:
'internal'
Определяет [режим предпросмотра]](#preview-mode) по умолчанию для ```tsx preview.
```tsx preview— использует режим, заданный вdefaultPreviewMode```tsx preview="internal"— режим internal```tsx preview="iframe-follow"— режим iframe-follow```tsx preview="iframe-fixed"— режим iframe-fixed
iframeOptions
Для режимов iframe плагин запускает отдельный экземпляр Rsbuild (как для dev-сервера, так и для сборки), полностью изолированный от процесса компиляции документации Rspress.
iframeOptions.devPort
- Тип:
number - По умолчанию:
7890
Настраивает порт dev-сервера для предпросмотра в iframe. Если указанный порт уже занят, плагин автоматически попробует следующий порт, до 20 попыток.
iframeOptions.builderConfig
Настраивает параметры сборки Rsbuild для iframe, например, добавление глобальных стилей или скриптов.
Например, чтобы добавить поддержку Less или Sass в превью, установите и настройте соответствующий плагин Rsbuild:
iframeOptions.customEntry
Позволяет задать пользовательскую точку входа для поддержки других фреймворков, например Vue.
Доступно только в режиме preview="iframe-follow".
Пример для фреймворка Vue:
previewLanguages
- Тип:
string[] - По умолчанию:
['jsx', 'tsx']
Определяет языки кода, для которых включён предпросмотр. Чтобы добавить поддержку других форматов (например, JSON или YAML), используйте эту опцию вместе с previewCodeTransform.
previewCodeTransform
- Тип:
(codeInfo: { language: string; code: string }) => string - По умолчанию:
({ code }) => code
Выполняет пользовательское преобразование кода перед предпросмотром.
В примере ниже показано, как превратить JSON Schema в рендерящийся React-компонент:
Настроить можно следующим образом:
Миграция с V1
При переходе с Rspress V1 функциональность плагина остаётся прежней. Изменился только синтаксис исходного кода MDX:
<code src="./foo.tsx"/>→ нужно заменить на Блок кода из файла:tsx file="./foo.tsx"- Опция
defaultPreviewModeзаменяет прежниеiframeOptions.positionиpreviewMode - Значение по умолчанию
defaultRenderModeизменилось с'preview'на'pure' @rsbuild/plugin-lessи@rsbuild/plugin-sassбольше не встроены. Если вам нужна поддержка Less или Sass в превью, установите соответствующий плагин и настройте его черезiframeOptions.builderConfig:
Пример 1:
Раньше: требовалось объявлять и в конфиге, и в MDX-файле.
После: достаточно объявить только в MDX-файле.
Пример 2:
Раньше: использовался атрибут iframe или previewMode="iframe".
После: используется единый атрибут preview="...".

