Менеджер перезагрузки

Менеджер перезагрузки (Reload Manager) — это встроенный компонент Addfox при разработке, отвечающий за автоматическую перезагрузку расширения после изменения кода.

Принцип работы

Изменение исходного кода

Пересборка Rsbuild

WebSocket отправляет сигнал перезагрузки

Менеджер перезагрузки получает сигнал

Отключение расширения → Включение расширения

Расширение перезагружается

Зачем нужен менеджер перезагрузки

Браузерное расширение отличается от обычного веб-приложения, после изменения кода требуется:

  1. Перезагрузка расширения — для вступления в силу изменений manifest
  2. Повторная инъекция Content Script — обновление скриптов на странице
  3. Перезапуск Service Worker — обновление фонового скрипта

Сам браузер не обрабатывает это автоматически, поэтому Addfox предоставляет менеджер перезагрузки для автоматизации этого процесса.

Использование

Менеджер перезагрузки автоматически включается при addfox dev, дополнительная конфигурация не требуется.

pnpm
npm
yarn
bun
pnpm dev

Техническая реализация

Менеджер перезагрузки — это вспомогательное расширение, загружаемое вместе с основным расширением:

  1. Основное расширение — ваше расширение в разработке
  2. Расширение менеджера перезагрузки — прослушивает WebSocket и управляет основным расширением

Расширение менеджера перезагрузки:

  • Автоматически устанавливается в режиме разработки
  • После завершения сборки принимает уведомление через WebSocket
  • Отправляет команды API chrome.management для отключения и повторного включения основного расширения
  • При изменении Content Script обновляет текущую вкладку

Параметры конфигурации

Порт горячей перезагрузки

// addfox.config.ts
export default defineConfig({
  hotReload: {
    port: 23333,  // Порт WebSocket
  },
});

Отключение обновления страницы

export default defineConfig({
  hotReload: {
    autoRefreshContentPage: false,  // Не обновлять страницу при изменении content
  },
});

Ручная перезагрузка

Если автоматическая перезагрузка не работает, можно перезагрузить вручную:

  1. Посетите chrome://extensions/
  2. Найдите расширение в разработке
  3. Нажмите иконку обновления

Или используйте горячие клавиши:

  • macOS: Cmd + R (на странице расширения)
  • Windows/Linux: Ctrl + R

Связанная конфигурация

  • hotReload — конфигурация горячей перезагрузки
  • guide/hmr — руководство по горячему обновлению