# Движок Vue REPL
vue-styleguidist поддерживает движок playground для Vue 3 на базе @vue/repl.
Этот движок включается явно (opt-in) и не требует отдельного standalone server. Он работает внутри того же процесса dev server, что и Styleguidist.
# Быстрый старт
- Установите зависимость Vue REPL:
pnpm add -D @vue/repl
- Включите новый движок в
styleguide.config.js:
module.exports = {
playgroundEngine: 'vueRepl'
}
- Запустите styleguidist как обычно:
pnpm vue-styleguidist server
# Разрешение runtime
Runtime для sandbox выбирается в таком порядке:
- Runtime из Storybook Vite cache (
node_modules/.cache/storybook/*/sb-vite/deps/vue.js) - Локальный runtime из
node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.js - Fallback в состояние unresolved с явным предупреждением в playground
Цель — избежать несовпадения runtime между локальным приложением, Storybook cache и iframe Vue REPL.
Путь к server renderer определяется из:
node_modules/@vue/server-renderer/dist/server-renderer.esm-browser.js
Styleguidist раздает его через внутренние endpoint-ы:
/__vsg-runtime/vue/__vsg-runtime/vue-server-renderer
Дополнительный процесс не нужен.
# Автоматическая реинициализация и HMR
Когда Styleguidist обнаруживает hot update данных индекса docs/components, он
отправляет событие vsg:dist-rebuilt в клиентском runtime.
В режиме vueRepl playground слушает это событие и перемонтирует sandbox, поэтому
при редактировании SFC-файлов компонента preview надежно переинициализируется.
# Область поддержки Vue 3
Текущая область реализации:
- только Vue 3
@vue/replс editor CodeMirror- legacy-движок (
vue-inbrowser-compiler) остается режимом по умолчанию и полностью поддерживается
Если в проекте все еще используются examples на Vue 2, оставьте:
module.exports = {
playgroundEngine: 'legacy'
}
# Troubleshooting
# REPL ведет себя как при runtime mismatch
- Убедитесь, что версии
vue,@vue/runtime-domи@vue/server-rendererсогласованы. - При необходимости удалите устаревший cache:
rm -rf node_modules/.cache/storybook
После этого перезапустите Styleguidist.
# REPL не может загрузить runtime
- Проверьте, что локальные файлы существуют:
node_modules/@vue/runtime-dom/dist/runtime-dom.esm-browser.jsnode_modules/@vue/server-renderer/dist/server-renderer.esm-browser.js
- Проверьте, что endpoint-ы dev server отвечают:
http://localhost:6060/__vsg-runtime/vuehttp://localhost:6060/__vsg-runtime/vue-server-renderer
# Legacy playground работает, а REPL — нет
- Убедитесь, что проект/ runtime действительно на Vue 3.
- Убедитесь, что в итоговом конфиге включено
playgroundEngine: 'vueRepl'. - Убедитесь, что
@vue/replустановлен в workspace.
# Миграция с legacy
Рекомендуемый путь миграции:
- Переведите один package / группу examples на
playgroundEngine: 'vueRepl'. - Проверьте цикл HMR-обновлений и корректность разрешения runtime.
- Сохраните regression-проверки для legacy examples.
- После валидации распространите изменения на все examples Vue 3.
Откат выполняется сразу: переключите playgroundEngine обратно в legacy.