Особенности посылки
- Быстрая упаковка — многоядерная компиляция и кэширование файловой системы для быстрого восстановления даже после перезагрузки.
- Поддерживает JS, CSS, HTML, файловые ресурсы и многое другое — не нужно устанавливать никаких плагинов.
- При необходимости автоматически конвертируйте модули с помощью Babel, PostCSS и PostHTML — даже node_modules.
- Разделение кода с нулевой конфигурацией, разделение с использованием операторов динамического импорта.
- Встроенный модуль поддержки горячей замены
- Дружественный интерфейс регистрации ошибок с фреймами кода с подсветкой синтаксиса, помогающими выявлять проблемы.
Сравнивать
На основе приложения разумного размера с 1726 модулями, 6,5 МБ без сжатия. MacBook Pro 2016 года выпуска, 4-ядерный физический процессор.
упаковочный инструмент | время |
---|---|
browserify | 22.98s |
webpack | 20.71s |
parcel | 9.98s |
посылка - включить кеширование | 2.64s |
Зачем вам посылка?
Существует множество сборщиков, включая webpack и browserify. Так зачем нам еще один? Основная причина в опыте разработчиков.
Многие инструменты упаковки построены на конфигурации и плагинах, и нередко требуется более 500 строк конфигурации для правильной работы приложения. Эти настройки громоздки и требуют много времени. Как правило, это может привести к отправке в рабочую среду неоптимизированного приложения. Parcel предназначен для нулевой конфигурации: просто укажите ему точку входа в приложение, и оно заработает.
Существующие инструменты упаковки очень медленные. Создание больших приложений с большим количеством файлов и зависимостей может занять несколько минут, что со временем может стать особенно болезненным во время разработки. Отслеживание изменений файлов может помочь при перестроении, но первоначальный запуск все еще очень медленный. Parcel компилирует ваш код, используя рабочие потоки, используя возможности современных многоядерных процессоров. Это привело к огромному увеличению скорости начальной сборки. Он также имеет кеш файловой системы, который сохраняет результаты компиляции каждого файла для более быстрого запуска позже.
Наконец, существующие инструменты упаковки построены на загрузке/преобразовании строк, где преобразование берет строку, анализирует ее, выполняет некоторые преобразования и снова генерирует код. Часто это приводит к тому, что в одном файле выполняется много операций синтаксического анализа и генерации кода, что очень неэффективно. Вместо этого преобразования посылок работают на AST, поэтому для каждого файла выполняется только один синтаксический анализ, несколько преобразований и одна генерация кода.
Как работает посылка?
посылка преобразует дерево ресурсов в дерево пакетов. Многие другие упаковщики в основном основаны на ресурсах js, а другие форматы вставляются — например, по умолчанию встраиваются в js как строки. Parcel не зависит от типа файла - он работает так, как вы ожидаете, с любым типом ресурса, не требует настройки.
Parcel принимает на вход точку входа, которая может быть любого типа: файлы JS, HTML, CSS, изображения и т. д. В посылке определены различные типы ресурсов, и они знают, как обращаться с конкретным типом ресурсов. Файл ресурсов анализируется, его зависимости извлекаются и преобразуются в окончательную скомпилированную форму. Это создает дерево ресурсов.
После построения дерева ресурсов ресурсы помещаются в дерево пакетов. Создайте пакет для входного ресурса и создайте вложенный пакет для динамически импортированного ресурса, что приводит к разделению кода. Подпакеты создаются при импорте различных типов ресурсов, например, если вы импортируете css-файл в js, он будет упакован в одноуровневый пакет, соответствующий js. Если для ресурса требуется несколько пакетов, он будет упакован до ближайшего общего предка, поэтому он не будет включен более одного раза.
После построения дерева пакетов каждый пакет имеет оболочку для конкретного типа файла, записанную в файл.
Оригинальный адрес: https://github.com/parcel-bundler/parcel