Команда parcel build запускает процесс подготовки
приложения к продакшен-сборке. В отличие от режима разработки, где
приоритетом является скорость и мгновенное обновление модулей,
production-сборка ориентирована на оптимизацию, минимизацию и стабильное
развертывание.
Основная задача сборщика в этом режиме — преобразовать исходный код и ресурсы проекта в набор статических файлов, пригодных для загрузки браузером с минимальными затратами по времени и памяти.
Первый этап работы Parcel — построение графа зависимостей.
Parcel начинает с точки входа, указанной в конфигурации или командной строке. Это может быть:
index.js, main.ts)index.html)После определения entry-point Parcel:
import, require, динамические
импортыВ результате формируется граф модулей, где:
Каждый модуль проходит этап трансформации.
Parcel использует парсеры (в зависимости от типа файла):
На этом этапе формируется AST (Abstract Syntax Tree), который позволяет работать с кодом структурно.
Parcel применяет систему трансформаций, называемую transform pipeline.
Каждый модуль проходит цепочку:
Трансформации могут быть:
В режиме build Parcel включает агрессивную
оптимизацию.
Удаление неиспользуемого кода происходит на основе анализа:
Модули, не влияющие на итоговый результат, исключаются из бандла.
Parcel автоматически применяет минификацию:
Минификация направлена на:
Parcel может объединять модули в единый контекст исполнения.
Это позволяет:
Parcel рассматривает всё как модуль, включая:
Небольшие файлы могут быть встроены прямо в код:
Это уменьшает количество HTTP-запросов.
Каждый ассет в production получает уникальный хеш в имени файла:
app.js → app.8f3a1c.jsstyle.css → style.91b2dd.cssХеш зависит от содержимого файла.
Это обеспечивает:
Parcel автоматически разделяет код на чанки.
При использовании:
import('./module.js')
Parcel создаёт отдельный чанк для module.js.
Кроме явных динамических импортов, Parcel может:
Результат — оптимизированная загрузка:
Если entry-point — HTML, Parcel:
<script> и
<link>HTML становится связующим звеном между чанками.
На этапе финализации Parcel формирует директорию
dist.
Типичная структура:
Каждый файл уже оптимизирован и готов к деплою.
Parcel может генерировать source maps для production.
Они позволяют:
Source maps могут:
Parcel активно использует многопоточность.
Обработка модулей распределяется по потокам:
Parcel использует кеширование на уровне:
Если файл не изменился, повторная обработка не выполняется.
Во время parcel build плагины могут вмешиваться в разные
этапы:
Плагины интегрируются в pipeline и выполняются строго в определённом порядке.
Parcel заменяет переменные окружения:
process.env.NODE_ENV.envВ production-сборке обычно:
NODE_ENV = "production"После завершения всех этапов Parcel:
Сборка становится статическим набором ресурсов, не требующих runtime-компиляции.