Миграция с Rspress 1.x
Этот документ поможет вам перейти с Rspress 1.x на Rspress V2. Рекомендуем использовать функцию «Копировать как Markdown», чтобы передать этот документ большой языковой модели для автоматизированной помощи в миграции.
Краткий чек-лист миграции
- Node.js >= ^20.19.0 || >=22.12.0
- Зависимости:
rspress→@rspress/core, удалить@rspress/shared - Пути импорта:
rspress/runtime→@rspress/core/runtime,rspress/theme→@rspress/core/theme - Пользовательские темы: изменить default-экспорты на именованные экспорты, использовать
@rspress/core/theme-original - Навигация верхнего уровня:
_meta.json→_nav.json(только для верхнего уровня) - Подсветка кода: Prism → Shiki, подсветка строк
{1,3-4}теперь требует настройки трансформера - builderPlugins: перенести в
builderConfig.plugins - Sass/Less: вручную установить
@rsbuild/plugin-sassили@rsbuild/plugin-less - Внешние блоки кода:
<code src="..." />→```tsx file="..." - themeConfig.locales: удалить
outlineTitleи другие текстовые конфиги, использоватьi18nSourceвместо них
[Важно] Требования к Node.js и зависимостям верхнего уровня
Версия Node.js
Rspress V2 больше не поддерживает Node.js 16 и 18. Пожалуйста, обновитесь до Node.js ^20.19.0 || >=22.12.0. Рекомендуется Node.js 22 LTS.
Версии зависимостей верхнего уровня
Если в вашем проекте уже установлены react, react-dom или react-router-dom, Rspress будет использовать версию проекта вместо встроенной версии по умолчанию.
[Важно] Изменения названий пакетов и путей импорта
Rspress V2 объединяет несколько пакетов в @rspress/core. Исходный пакет rspress больше не используется.
- до:
- после:
Если вы разрабатывали плагин для Rspress, измените peerDependencies плагина с rspress на @rspress/core:
Изменения путей импорта
Рекомендуется использовать глобальный поиск и замену для обновления путей импорта.
Пример:
- до:
- после:
Удалённые отдельные пакеты
Следующие пакеты теперь встроены в @rspress/core. Если вы обновляетесь с версии 1.x, пожалуйста, обратитесь к таблице изменений путей импорта выше, чтобы обновить пути импорта в вашем проекте:
rspress— переименован в@rspress/core@rspress/runtime— Runtime теперь встроен@rspress/theme-default— Тема по умолчанию теперь встроена@rspress/plugin-shiki— подсветка кода Shiki теперь используется по умолчанию@rspress/plugin-auto-nav-sidebar— боковая панель навигации встроена@rspress/plugin-container-syntax— синтаксис контейнеров встроен@rspress/plugin-last-updated— время последнего обновления встроено@rspress/plugin-medium-zoom— увеличение изображений встроено
[Важно] Изменения в экспортах ESM для пользовательских тем
Пользовательские темы больше не используют default-экспорты. Вместо этого используйте именованные экспорты.
- до:
- после:
Пути импорта темы
Использование компонентов темы в MDX-файлах внутри каталога docs:
Если вы используете алиас @theme, добавьте сопоставление путей в tsconfig.json для подсказок типов:
Если вы сталкиваетесь с ошибками о недостающих экспортах из @theme или @rspress/core/theme, это, вероятно, происходит потому, что вы не использовали @rspress/core/theme-original при переопределении темы в папке theme, что приводит к циклической ссылке:
Убедитесь, что вы используете @rspress/core/theme-original в папке theme и правильно экспортируете все компоненты.
[Важно] Подсветка кода Shiki заменяет Prism
Rspress V2 по умолчанию использует Shiki v3 для подсветки кода. Prism был удалён.
Список поддерживаемых языков Shiki смотрите на страницеShiki Languages. Подробнее об использовании Shiki — в документации Блоки кода.
Миграция конфигурации
- до:
Конфигурация алиасов языков осуществлялась через highlightLanguages:
- после:
Настройка langAlias и других опций Shiki осуществляется через markdown.shiki:
Изменения в синтаксисе подсветки строк
В V2 синтаксис мета-подсветки строк {1,3-4} больше не включён по умолчанию. Выберите один из следующих вариантов в зависимости от ваших нужд:
- Подсветка отдельных строк: Использует синтаксис комментариев
// [!code highlight], требует настройкиtransformerNotationHighlight - Подсветка строк через meta-информацию: Совместим с устаревшим синтаксисом
{1,3-4}, требует настройкиtransformerCompatibleMetaHighlight
Чтобы сохранить совместимость с синтаксисом мета-подсветки строк из V1, добавьте следующую конфигурацию:
[Важно] Переименован файл навигации верхнего уровня
В Rspress V2 конфигурация панели навигации и боковой панели разделены. Файл верхнего уровня _meta.json необходимо переименовать в _nav.json, внутренние файлы остаются без изменений.
- до:
- после:
[Важно] Режим строгого SSG по умолчанию
Теперь SSG включён в строгом режиме по умолчанию. При любой ошибке сборка немедленно прерывается вместо отката на CSR (рендеринг на стороне клиента). Опция ssg.strict удалена.
Чтобы полностью отключить SSG, укажите ssg: false:
[Важно] Функции, включённые по умолчанию
В V2 следующие функции включены по умолчанию:
Чтобы отключить ленивую компиляцию:
Переработка базовой конфигурации base
Конфигурация base теперь реализована с использованием basename из react-router.
Ключевые изменения:
useLocation().pathnameбольше не включает префиксbase- Для навигации используйте
Link/useNavigateвместо прямого манипулированияwindow.location
При cleanUrls: true ссылки укорачиваются
Когда включена опция cleanUrls: true, генерируемые ссылки больше не содержат суффикс /index.
- раньше:
/guide/index - теперь:
/guide/
Удалена конфигурация builderPlugins
Опция builderPlugins удалена. Пожалуйста, мигрируйте на builderConfig.plugins.
- до:
- после:
Sass/Less требует ручной установки
Встроенные плагины для Sass/Less удалены. При необходимости установите их вручную:
Затем зарегистрируйте в конфигурации:
Изменён синтаксис внешних блоков кода
Синтаксис внешних блоков кода изменён:
- до:
- после:
Изменено разрешение относительных ссылок
Относительные ссылки больше не требуют префикса ./. Теперь следующие два синтаксиса эквивалентны:
Исключение файлов MDX из маршрутизации
Файлы, начинающиеся с подчёркивания _, автоматически исключаются из маршрутизации. Это удобно для MDX-фрагментов и React-компонентов.
Изменения в стилях темы
Префикс классов Tailwind
Встроенные классы темы теперь имеют префикс Tailwind, чтобы избежать конфликтов. Если вы полагаетесь на классы вроде dark:hidden, настройте Tailwind/UnoCSS в вашем проекте.
Стилизация нативных HTML-тегов
Нативные HTML-теги теперь по умолчанию имеют стили документа. Чтобы изолировать стилизацию, добавьте класс .rp-not-doc:
Встроенные многоязычные тексты
Тема по умолчанию теперь включает встроенные переводы интерфейса с поддержкой tree-shaking в зависимости от настроенных в проекте языков.
Ключевые изменения:
- Если в вашей документации используются только
enиzh, то в сборку попадут только эти языки - Для языков, не поддерживаемых Rspress, автоматически используется fallback на
en - В большинстве случаев вам не нужно вручную настраивать тексты i18n
Следующие текстовые конфигурации в themeConfig.locales удалены. Пожалуйста, удалите связанные настройки:
-
outlineTitle -
lastUpdatedText -
editLink.text -
prevPageText -
nextPageText -
sourceCodeText -
searchPlaceholderText -
searchNoResultsText -
searchSuggestedQueryText -
overview.filterNameText -
overview.filterPlaceholderText -
overview.filterNoResultText -
до:
- после:

