Горячее обновление (HMR)
Команда addfox dev предоставляет опыт горячего обновления при разработке: после сохранения кода происходит автоматическая пересборка, и через WebSocket отправляется уведомление браузерному расширению о перезагрузке.
Механизм работы
Механизм горячего обновления для разных entry
Background / Service Worker
Background скрипт использует механизм перезагрузки расширения:
- Изменение кода → пересборка Rsbuild
- Завершение сборки → WebSocket отправляет команду перезагрузки
- Вызов
chrome.runtime.reload()для перезагрузки всего расширения - Service Worker перезапускается, загружается новый код
После перезагрузки Service Worker теряет состояние в памяти. Для постоянного хранения данных используйте API chrome.storage.
Content Script
Content Script использует механизм повторной инъекции:
- Изменение кода → пересборка Rsbuild
- Завершение сборки → перезагрузка расширения
- Content Script автоматически инжектируется в соответствующие страницы
- Открытые вкладки можно настроить для автоматического обновления (см. конфигурацию)
Content Script выполняется в окружении веб-страницы, после перезагрузки повторно инжектируется на соответствующие страницы, не требуется ручного обновления страницы управления расширением.
Popup / Options / Sidepanel
Entry типа страницы используют механизм Rsbuild HMR:
- Изменение кода → Rsbuild пытается HMR горячую замену
- При успешном HMR → локальное обновление страницы, сохранение состояния
- При неудаче HMR → автоматический откат к обновлению страницы
- Более быстрая скорость обновления
- Сохранение состояния компонентов (например, ввод форм)
- Более плавный опыт разработки
Из-за механизма Rsbuild файлы HTML шаблонов (например, popup/index.html) не поддерживают истинное HMR горячую замену.
При изменении HTML шаблона Addfox откатывается к обновлению страницы или перезагрузке расширения.
Особая обработка Firefox
Режим разработки Firefox использует инструмент web-ext для управления расширением:
- Перезагрузка расширения обрабатывается
web-ext, а не WebSocket от Addfox - При первом запуске автоматически открывается Firefox и загружается расширение
- Поддерживается автоматическая перезагрузка (livereload)
При разработке с Firefox убедитесь, что Firefox установлен. Addfox автоматически вызовет web-ext для обработки загрузки и перезагрузки расширения Firefox.
Использование
Процесс первого запуска
После выполнения addfox dev:
- Первоначальная сборка завершена
- Автоматический запуск браузера в соответствии с конфигурацией
- Загрузка расширения в разработке
- Автоматическое открытие страниц popup/options расширения (если настроено
open)
Параметры конфигурации
Порт горячей перезагрузки
Следующие шаги
- Конфигурация browserPath — настройка автоматического открытия браузера при разработке
- Отладка monitor — использование панели мониторинга ошибок для отладки
- config/hot-reload — полный список параметров горячей перезагрузки

