@rspress/plugin-preview новинка
Используется для предварительного просмотра компонентов прямо в блоках кода файлов md(x). Подходит для написания документации к библиотекам компонентов.
Установка
Использование
1. Установка плагина
Сначала добавьте следующую конфигурацию в файл rspress.config.ts:
2. Использование в mdx-файлах
В mdx-файлах используйте синтаксис ```tsx preview:
Результат рендеринга будет выглядеть так:
- На данный момент работает только в файлах
.mdx. - Компонент необходимо экспортировать как
default— Rspress автоматически отрендерит этот компонент.
3. Вынос кода компонента в отдельные файлы (не обязательно)
Помимо написания кода компонента прямо в блоке кода mdx-файла, вы можете использовать его вместе с Блоком кода из файла, чтобы вынести примеры кода в отдельные файлы.
Результат рендеринга будет выглядеть так:
Использование режима предпросмотра iframe
Этот плагин поддерживает несколько режимов предпросмотра. Переключаться между ними можно, изменяя мета-информацию preview="...". Например, ```tsx preview="iframe-follow" переключает в режим iframe-follow.
```tsx preview эквивалентно ```tsx preview="{defaultPreviewMode}", значение определяется параметром defaultPreviewMode.
Режим предпросмотра iframe имеет отдельную среду компиляции и выполнения.
-
Отдельная среда компиляции — код примера из блока кода компилируется отдельным экземпляром Rsbuild как точка входа, что позволяет внедрять переменные sass, less и т. д.
-
Отдельная среда выполнения — эффективно устраняет конфликты стилей с сайтом документации и позволяет загрузить собственный
base.cssбиблиотеки компонентов.
preview="internal"
"internal" — режим предпросмотра по умолчанию, при котором компонент рендерится непосредственно внутри документа.
Синтаксис:
или
Отобразится так:
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, вам необходимо внедрить
@import "tailwindcss";через опцию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. Используйте эту настройку, если порт по умолчанию уже занят.
iframeOptions.builderConfig
Настраивает параметры сборки Rsbuild для iframe, например, добавление глобальных стилей или скриптов.
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'
Пример 1:
Раньше: требовалось объявлять и в конфиге, и в MDX-файле.
После: достаточно объявить только в MDX-файле.
Пример 2:
Раньше: использовался атрибут iframe или previewMode="iframe".
После: используется единый атрибут preview="...".

