Dev-режим (Extension Dev Bridge)
Горячая разработка расширений без установки .ryntextension на каждую итерацию. Лаунчер подхватывает dist/ напрямую с диска и перезагружает расширение после каждой сборки.
Когда использовать
- Активная разработка UI и логики расширения в связке с запущенным лаунчером.
- Быстрая проверка реестров, маршрутов и expose без упаковки архива.
- Несколько расширений одновременно: каждый
pnpm devв своём каталоге.
Для релиза и маркетплейса по-прежнему нужны vite build и rynt-extension-pack — см. Сборка и упаковка.
Быстрый старт
- Запустите лаунчер (NW.js).
- Откройте Управление расширениями → включите dev-сервер кнопкой с иконкой link (см. Управление установленными).
- В каталоге расширения:
pnpm devСкрипт dev = vite build --watch. После каждой сборки плагин ryntExtensionDevBridgePlugin из @rynt/extension-build регистрирует dist/ в лаунчере.
В терминале сборки ожидайте:
[rynt/extension-build] dev-bridge: зарегистрировано @acme/my-pack → http://127.0.0.1:39217Как это устроено
| Компонент | Где | Назначение |
|---|---|---|
| Dev-hub | Лаунчер (NW.js host) | HTTP на 127.0.0.1:39217, реестр dev-расширений |
| Dev-bridge | @rynt/extension-build | Vite-плагин: POST register после closeBundle |
| Runtime | Лаунчер | Объединяет установленные + dev; dev перекрывает по manifest.id |
| UI | Диалог «Управление расширениями» | Toggle hub, статус, бейдж Dev на карточках |
Загрузка остаётся file-based (import с диска), не HTTP-import entry.
Перекрытие установленной версии
Если на диске уже установлено расширение с тем же manifest.id, dev-версия временно заменяет его в рантайме. В UI карточка dev помечена бейджем Dev; удаление и вкл/выкл для dev недоступны.
При остановке dev-hub dev-записи снимаются, остаётся только то, что установлено на диск.
Переменные окружения
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
RYNT_LAUNCHER_DEV_HUB | http://127.0.0.1:39217 | URL hub (если порт/хост меняли) |
RYNT_DEV=1 | — | Явно включить bridge (опционально; достаточно vite build --watch) |
RYNT_DEV_BRIDGE=0 | — | Отключить bridge в watch-сборке |
HTTP API hub (localhost)
| Method | Path | Описание |
|---|---|---|
| GET | /api/v1/dev/health | Статус и список подключённых расширений |
| POST | /api/v1/dev/extensions/register | { manifest, rootDir } — абсолютный путь к dist/ |
| POST | /api/v1/dev/extensions/unregister | { id } |
| POST | /api/v1/dev/extensions/reload | Принудительная перезагрузка в лаунчере |
Hub слушает только 127.0.0.1. Доступен в любой NW.js-сборке лаунчера.
Типичные проблемы
dev-bridge: не удалось связаться с лаунчером
- Dev-hub в лаунчере не включён (кнопка link).
- Лаунчер не запущен или порт занят.
dist/manifest.json не найден
- Сборка не завершилась или manifest-плагин не отработал. Убедитесь, что в
vite.config.tsиспользуетсяryntExtensionViteConfig({ manifest: { … } }).
Изменения не видны
- Проверьте, что watch пересобрал бандл (сообщение
built in …). - CSS подключается отдельным
<link>— при reload добавляется cache-bust?v=.