June 1, 2022

Parcel === webpack на минималках

Parcel - это сборщик веб-приложений. Он относится к той же категории инструментов, что и webpack, но с другим ценностным предложением.Parcel обещает многое делать вообще без какой-либо настройки и к тому же собирать код достаточно быстро.

Набор основных функций этого сборщика включает в себя:

  • сборка статики (JS, CSS, HTML, картинки)
  • нулевое количество конфигурации
  • автоматические преобразования с использованием Babel, PostCSS и PostHTML
  • обработку хот-релоуда
  • кеширование и распараллеливание сборки для ускорения

Установка

Parcel можно установить при помощи yarn:

yarn global add parcel-bundler

или npm:

npm install -g parcel-bundler

Запуск Parcel

Parcel может быть запущена с помощью следующей команды:

parcel watch index.html

после запуска начнется отслеживание HTML-страницы и если файл будет как-то изменен, то это запустит пересборку.

Также можете вместо этого указать Parcel следить за JS-файлом:

parcel watch entry.js

Сервер для разработки

Удобно, что Parcel поставляется со встроенным сервером разработки, так что вам не нужно его настраивать. Вы можете стартануть его вот так:

parcel index.html

Релизный бандл

Когда вы будете довольны своим приложением и захотите создать готовый к работе бандл, просто запустите:

parcel build index.html

Продовая сборка отключает хот-релоад и не отслеживает изменения в файле, файлы сборки существуют после завершения билда и используется минификатор для его создания.

Сборка также автоматически запускает переменную NODE_ENV в рабочий режим, чтобы заставить библиотеки генерировать продовый код (например, React и Vue).

Статика

Parcel поддерживает как модули ES (import...), так и CommonJS (require...).

Он выполняет автоматическое разделение кода с использованием динамического импорта.

Что это значит и почему это полезно?

Динамический импорт возвращает промис, и вместо загрузки всех зависимостей при запуске приложения мы можем попросить браузер загрузить их, но выполнить только некоторые части приложения, когда они будут готовы.

Или же мы можем попросить браузер загружать их только тогда, когда нам это нужно, например, когда пользователь нажимает на определенную ссылку.

CSS

Parcel поддерживает обычный CSS, Sass, Less и Stylus.

Трансформация

Когда Parcel обнаружит, что у вас есть одна из конфигураций:

  • Babel (.babelrc)
  • PostCSS (.postcssrc)
  • PostHTML (.posthtmlrc)

он будет использовать это автоматически в процессе сборки.

Горячая перезагрузка

Горячая перезагрузка (HMR) - полезная функция при создании приложения. Когда мы сохраняем новую копию CSS или JavaScript, HMR заботится об обновлении в браузере, не обновляя все приложение.

Parcel vs webpack

Давайте сравним Parcel с webpack, потому что это очень популярные сборщики, и вы, вероятно, слышали о них или использовали в проектах. Также приятно знать различия, даже если вы никогда не использовали ни один из них.

webpack позволяет вам делать массу вещей, и хотя это очень круто, это также означает, что нам нужно тщательно настроить его, чтобы он делал именно то, что мы хотим.

Иногда webpack.config.js разрастается до сотен строк, и мы копируем / вставляем его в следующий проект, и это очень неприятно, если нам нужно его изменить.

Parcel обещает нам делать многое из того, что делает webpack, но вообще без какой-либо настройки, полагаясь на соглашения, а не на конфигурацию.

Какой из них вы должны использовать? Я бы рекомендовала Parcel для небольших проектов и webpack, когда вы перерастете возможности Parcel и захотите получить абсолютный контроль над всем, что делает ваш проект.


На этом все, чтобы не пропустить новые интересные посты - не забывай подписаться на телеграм канал!