Артефакты сборки Addfox по умолчанию выводятся в .addfox/extension/ в поддиректории для конкретного браузера (например, extension-chromium или extension-firefox).

Структура вывода по умолчанию

.addfox
extension
extension-chromium# Артефакты Chromium
manifest.json
background
index.js
content
index.js
index.css
popup
index.html
index.js
options
index.html
index.js
icons
icon*.png
extension-firefox# Артефакты Firefox
cache# Кэш разработки

Настройка пользовательской директории вывода

Можно изменить имя директории вывода через конфигурацию outDir:

// addfox.config.ts
export default defineConfig({
  outDir: "dist",  // Вывод в .addfox/dist/
});

Описание содержимого вывода

Файлы JavaScript

  • Все entry скрипты, упакованные Rsbuild
  • Включают преобразование кода, сжатие (продакшн режим)
  • Source map (режим разработки)

Файлы HTML

  • Автоматически генерируемые Rsbuild или использование пользовательских шаблонов
  • Уже внедрены соответствующие entry скрипты
  • Автоматически генерируемые страницы (без пользовательского index.html) содержат <div id="root"></div>; <title> соответствует manifest.name расширения; иконка страницы через <link rel="icon"> ссылается на manifest.icons. При пользовательском HTML шаблоне title и иконку необходимо поддерживать самостоятельно.

Файлы CSS

  • Стили, импортированные из entry скриптов через import
  • Обработка PostCSS (если настроен Tailwind и т.д.)

Manifest

  • Конечный сгенерированный manifest.json
  • Содержит все пути к entry и конфигурацию

Статические ресурсы

  • Файлы из директории public/ копируются без изменений
  • Иконки расширений, файлы интернационализации и т.д.

Разработка vs Продакшн

Режим разработки (addfox dev)

  • Вывод в .addfox/extension/
  • Включает Source map
  • Код не сжат
  • Браузер напрямую загружает эту директорию

Продакшн режим (addfox build)

  • Также вывод в .addfox/extension/
  • Код сжат и оптимизирован
  • Может генерироваться zip файл (по умолчанию включено)

Упаковка

После завершения сборки по умолчанию выполняется упаковка в zip:

.addfox
extension# Вывод сборки
extension.zip# Упакованный файл (для распространения)

Можно отключить через zip: false:

export default defineConfig({
  zip: false,
});

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

  • outDir — имя директории вывода
  • zip — конфигурация упаковки