Parcel обрабатывает стили как часть единой графовой системы зависимостей, где HTML выступает полноценной точкой входа наряду с JavaScript. Встроенные стили в HTML рассматриваются не как статический фрагмент разметки, а как активный ресурс, который может участвовать в трансформациях, оптимизации и горячей перезагрузке.
HTML-файлы в Parcel анализируются как исходные модули. При встрече конструкции:
<style>
body {
margin: 0;
font-family: system-ui;
}
</style>
содержимое блока извлекается и обрабатывается через CSS-конвейер Parcel. Это означает, что:
Встроенные стили не остаются «внутри HTML» в финальном бандле — они могут быть либо инлайнены обратно, либо извлечены в отдельный CSS-файл в зависимости от режима сборки и конфигурации.
styleHTML-атрибут style рассматривается иначе, чем
<style>-блоки:
<div style="display: flex; gap: 12px; color: red;"></div>
Parcel не превращает такие стили в отдельные модули, поскольку они являются частью DOM-структуры. Однако на них распространяются общие правила оптимизации HTML:
Inline-стили остаются привязанными к узлу DOM и не участвуют в механизмах переиспользования или код-сплиттинга.
Ключевая особенность Parcel — унификация обработки CSS независимо от
источника. Встроенные стили в HTML проходят через тот же пайплайн, что и
отдельные .css файлы:
@import,
url());Если внутри <style> используется:
@import "./theme.css";
Parcel добавляет theme.css в граф зависимостей и
обрабатывает его как полноценный модуль, включая возможное разделение
чанков.
CSS Modules активируются только для файлов, явно помеченных как
модульные (например, styles.module.css). Встроенные
<style> в HTML не становятся CSS Modules
автоматически.
Однако при подключении модульных файлов через Jav * aScript:
import styles from "./button.module.css";
Parcel обеспечивает локальную область видимости классов, а HTML, содержащий ссылки на эти классы, получает уже сгенерированные хэши. Встроенные стили при этом остаются глобальными.
HMR в Parcel работает на уровне модулей. Для
<style> внутри HTML это означает:
<style> применяются без полной
перезагрузки страницы;Пример поведения:
<style>
.box {
background: blue;
}
</style>
При изменении background Parcel:
<style>-инжекцию.<style>
теги;url() внутри встроенных стилейВнутри <style> Parcel анализирует URL-ресурсы:
<style>
.bg {
background-image: url("./image.png");
}
</style>
Поведение:
image.png добавляется в граф зависимостей;Если в проекте присутствует конфигурация PostCSS, она применяется ко
всем CSS-источникам, включая <style> в HTML.
Типичные трансформации:
Таким образом, встроенный CSS не является «упрощённой версией» — он проходит тот же компиляторный путь.
HTML, содержащий <style>, может импортироваться
как модуль:
import "./index.html";
Parcel интерпретирует это как entry point и строит полный граф:
<style>;Это позволяет HTML-странице функционировать как корневой модуль приложения.
Встроенные стили могут быть:
.css файл;Решение зависит от:
Часто крупные стили извлекаются для ускорения загрузки и лучшего HTTP-кеширования.
Parcel сохраняет связь между исходным HTML и итоговым CSS:
<style>;<style>;Встроенные стили используются как часть гибридной модели:
Parcel обеспечивает одинаковый уровень обработки для всех CSS-источников, что делает встроенные стили полноценным участником сборочного процесса, а не статическим фрагментом разметки.