В экосистеме Parcel процесс подготовки приложения к продакшену
строится вокруг команды parcel build, которая запускает
полный цикл оптимизации исходного кода: трансформацию модулей,
минификацию, разделение кода, оптимизацию ассетов и генерацию файлов с
хешами для кеширования.
Режим сборки отличается от режима разработки тем, что ориентирован не на скорость пересборки и удобство отладки, а на минимальный размер бандлов и максимальную производительность выполнения в браузере.
Команда:
parcel build src/index.html
При выполнении происходит:
Результат помещается в директорию dist/ (по
умолчанию).
Dev-сервер Parcel использует in-memory сборку, быстрые HMR-обновления и не применяет агрессивные оптимизации.
Production build включает:
Parcel автоматически применяет оптимизаторы:
Минификация активируется по умолчанию в
parcel build.
Отключение:
parcel build src/index.html --no-minify
При использовании ES-модулей Parcel анализирует экспортируемые значения и исключает неиспользуемые части библиотек.
Пример:
import { a, b } from "./utils.js";
Если b не используется, он исключается из финального
бандла.
Особенно эффективно это работает с библиотеками, поддерживающими ESM-структуру.
Parcel автоматически разбивает код на чанки при использовании динамического импорта:
import("./dashboard.js").then(module => {
module.init();
});
Каждый динамический импорт превращается в отдельный бандл, который загружается по требованию.
Также Parcel выполняет автоматическое разделение:
В production-режиме Parcel добавляет хеши в имена файлов:
app.8f3a91.js
styles.4c21d2.css
Это обеспечивает:
Хеш основан на содержимом файла, а не на времени сборки.
Parcel обрабатывает не только Jav * aScript:
В production-сборке важную роль играет NODE_ENV:
NODE_ENV=production parcel build src/index.html
Parcel автоматически:
productionПример:
if (process.env.NODE_ENV !== "production") {
console.log("debug");
}
Этот код будет удалён из итогового бандла.
По умолчанию Parcel генерирует source maps для продакшена.
Отключение:
parcel build src/index.html --no-source-maps
Source maps позволяют:
По умолчанию используется dist/, но можно изменить:
parcel build src/index.html --dist-dir build
Это полезно при интеграции с CI/CD или backend-серверами.
При деплое на поддиректорию важно указать базовый путь:
parcel build src/index.html --public-url /app/
Это влияет на:
Parcel поддерживает систему targets, определяющую, под какие среды выполняется сборка.
Пример в package.json:
{
"targets": {
"default": {
"browsers": ["> 0.25%", "not dead"]
}
}
}
Это влияет на:
Parcel выполняет оптимизацию объединения модулей в единый scope, уменьшая overhead функций-обёрток.
До оптимизации:
После:
Parcel строит полный dependency graph:
Каждый узел графа проходит трансформации:
Parcel использует persistent cache:
Кэш располагается в .parcel-cache/.
Очистка кэша:
rm -rf .parcel-cache
Parcel поддерживает plugin API для кастомизации production pipeline:
Плагины автоматически подключаются через зависимости, без ручной конфигурации bundler.
Production build строго валидирует проект:
Это обеспечивает предсказуемость результата в CI/CD.
Parcel поддерживает несколько entry points:
parcel build src/index.html src/admin.html
В этом случае:
Финальный результат production build оптимизируется по нескольким направлениям: