Skip to content

Dev-режим (Extension Dev Bridge)

Горячая разработка расширений без установки .ryntextension на каждую итерацию. Лаунчер подхватывает dist/ напрямую с диска и перезагружает расширение после каждой сборки.

Когда использовать

  • Активная разработка UI и логики расширения в связке с запущенным лаунчером.
  • Быстрая проверка реестров, маршрутов и expose без упаковки архива.
  • Несколько расширений одновременно: каждый pnpm dev в своём каталоге.

Для релиза и маркетплейса по-прежнему нужны vite build и rynt-extension-pack — см. Сборка и упаковка.

Быстрый старт

  1. Запустите лаунчер (NW.js).
  2. Откройте Управление расширениями → включите dev-сервер кнопкой с иконкой link (см. Управление установленными).
  3. В каталоге расширения:
bash
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-buildVite-плагин: 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_HUBhttp://127.0.0.1:39217URL hub (если порт/хост меняли)
RYNT_DEV=1Явно включить bridge (опционально; достаточно vite build --watch)
RYNT_DEV_BRIDGE=0Отключить bridge в watch-сборке

HTTP API hub (localhost)

MethodPathОписание
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=.

См. также