Entry на основе файлов
Когда вы не настраиваете поле entry в addfox.config.ts, Addfox автоматически обнаруживает файлы entry по соглашениям. Это рекомендуемый способ разработки, позволяющий сосредоточиться на бизнес-логике, а не на конфигурации.
Основные принципы
Сборка на основе Rsbuild
- Entry должен быть JS/TS: реальные entry сборки могут быть только скриптами
.js,.jsx,.ts,.tsx - Обработка HTML:
- HTML не предоставлен → Rsbuild автоматически генерирует
- HTML предоставлен → используется как шаблон, но необходимо указать entry скрипт через
data-addfox-entry
Соглашения о структуре директорий
Entry только со скриптами (background / content)
Эти entry не требуют HTML страниц, достаточно предоставить скриптовые файлы.
Entry требующие страниц (popup / options / sidepanel / devtools / offscreen)
Эти entry создают HTML + JS. Поддерживаются два способа:
Способ 1: HTML не предоставлен (рекомендуется)
Пишем только скрипт, без HTML. Rsbuild автоматически генерирует HTML и внедряет скрипт.
Когда HTML не предоставлен (нет шаблона) и генерируется сборкой, Addfox / Rsbuild договариваются:
- Точка монтирования: страница содержит
<div id="root"></div>для использования сcreateRoot/mountв React / Vue и т.д. <title>: соответствуетmanifest.nameрасширения (обновляется при изменении manifest).- Иконка вкладки (favicon): внедряется через
<link rel="icon">,hrefберется изmanifest.icons(подходящий размер выбирается по правилам, путь разрешается относительно расположения HTML).
Если в данном entry используется пользовательский HTML шаблон, автоматическое внедрение title / иконки не применяется; их необходимо написать в шаблоне самостоятельно (атрибут data-addfox-entry и точка монтирования, обычно #root, должны быть сохранены).
Способ 2: Предоставление HTML шаблона
Если требуется пользовательская структура страницы, можно разместить HTML файл в директории entry (или рядом с однофайловым entry).
При использовании пользовательского HTML необходимо указать entry скрипт через атрибут data-addfox-entry, иначе фреймворк не сможет распознать его.
data-addfox-entryможет появляться в HTML файле только один разsrcможет быть относительным путем, указывающим на скрипт в той же или другой директории- Другие ресурсы (CSS, изображения и т.д.) импортируйте в entry скрипте через
import, не ссылайтесь на них напрямую в HTML - HTML файл сам по себе не компилируется, используется только как шаблон
- Пользовательский шаблон не автоматически синхронизирует
name/iconsиз manifest в<title>и favicon; только автоматически генерируемый HTML применяет соглашения, описанные выше в разделе «Соглашение для автоматически генерируемых HTML страниц»
Полные примеры
Пример 1: Автоматическая генерация всех HTML
Пример 2: Смешанное использование
Пример 3: Использование фреймворка (на примере React)
Часто задаваемые вопросы
В: Файл entry должен называться index.ts?
В директории должен быть index.(js|ts|jsx|tsx). В однофайловой форме может быть имя_entry.(js|ts|jsx|tsx).
В: Поддерживается ли многоуровневая вложенность директорий?
Не поддерживается. Директория entry может иметь только один уровень, т.е. app/popup/index.ts ✓, а app/pages/popup/index.ts ✗.
В: Можно ли смешивать автоматическую генерацию и пользовательские HTML?
Можно. Каждый entry независимо решает, использовать автоматическую генерацию или пользовательский шаблон.
В: Как отладить проблемы с HTML шаблоном?
Проверьте:
- Есть ли атрибут
data-addfox-entryв HTML файле - Правильно ли указан путь
srcк entry скрипту - Только ли один тег script имеет атрибут
data-addfox-entry
Следующие шаги
- Entry на основе конфигурации — изучите явную конфигурацию путей entry
- Конфигурация appDir — изменение директории исходного кода
- Конфигурация manifest — конфигурация manifest расширения

