Вышел Rolldown 1.0
• build
Вступление
Вчера вышел Rolldown 1.0. Уже долгое время была доступна бета, затем был Release Candidate (RC), и этот релиз-кандидат даже попал в стабильный релиз Vite 8.
Почему это важно для экосистемы фронтенда? Как это изменит сборку проектов? Что это вообще такое и какие задачи решает? Попробуем ответить на всё.
Webpack / Rollup
Webpack – уже далеко не новый инструмент, который в своё время поменял очень многое. Он позволял собрать код как для дев-режима, так и для продакшена, используя код, раскиданный по разным файлам.
Когда-то о таком можно было только мечтать. Наверно, многие не застали, но когда-то фронтендовый код собирался буквально склейкой строк, обёрнутый в (function(){})();. Были вариации на тему Require.js и подобного, но это уже не имеет такого глобального значения. Webpack это всё поменял, и в текущем мире старые подходы выглядят… нелепо?
Сейчас считается стандартом разложить код по файлам, связать их через ESM/CommonJS, а потом собрать всё это сборщиком в рабочий продакшеновый код. На всякий случай напомню, что require() в браузерах не работает, а нативные импорты import ... в браузерах хоть и есть, но в чистом виде приведут к большому количеству запросов, и, как следствие, к медленной загрузке страницы. Да, сборка проекта всё ещё нужна (или бандлинг, называйте, как хотите).
В 2018м году вышел Rollup 1.0. Оглядываясь назад, можно сказать, что все эти годы Rollup был хорошим инструментом. Он не победил Webpack по популярности в головах людей (как мне кажется), но он занял немалую нишу.
Скажу субъективно, но по сравнению с Webpack, Rollup представлял более простое апи (в том числе для плагинов), меньший размер выходных файлов и более простую (и понятную) стратегию деления на чанки. Он особенно хорошо себя показывал для сборки всевозможных библиотек, когда требовалось получить хороший выходной код, JS в чистом виде. А Webpack всё ещё хорошо себя показывал в сборке для браузеров со всевозможными плагинами для картинок, CSS и кучи всего другого (конечно, аналогичные плагины были и для Rollup).
Vite
Vite решал схожие задачи, но делал это проще и быстрее. Встроенная поддержка тайпскрипта (в том числе для конфига!) – пожалуйста. Поддержка CSS из коробки? Тоже. Минификация? Хорошая.
И всё это без установки десятка-другого пакетов из npm и без конфига на сотню строк. Vite брал самые распространённые практики и делал так, чтобы они легко заводились, а при необходимости поведение можно было кастомизировать.
Кроме того, он был (и есть) в разы быстрее Webpack. Переход на Vite сразу сказывался на опыте разработки – больше не нужно было ждать десятки секунд (а то и минуты) для старта дев-сервера.
За счёт чего это всё работало? Исторически, Vite использовал Esbuild и Rollup. Esbuild использовался в дев-сборке для рядовых задач, например, для превращения TypeScript в JavaScript. Rollup использовался в продакшеновой сборке и объединял файлы, делил на чанки и так далее.
Не буду останавливаться подробно на всех нюансах, но отмечу, что Vite пытался максимально обеспечить совместимость с плагинами Rollup. Часть плагинов Rollup заводилась из коробки и для дев-режима тоже, даже когда никакого Rollup и не использовалось!
Тем самым Vite пытался усидеть на двух стульях: в дев-сборке Esbuild + пофайловая сборка, а в проде Rollup и сборка бандлов.
Esbuild
Остановимся на Esbuild чуть подробнее. Esbuild решал схожие задачи: собрать код, минифицировать его, и так далее. Он написан на Go и пытался заменить целую пачку инструментов:
- Terser (Uglify) не нужен, вот вам быстрая минификация
- Webpack не нужен, вот вам быстрый бандлинг
- tsc (ts-loader) тоже не нужен, Esbuild умеет справляться и с этим
- Сборка CSS? Пожалуйста
- И так далее
Он настолько хорош, что Vite его вобрал в себя. Всё из-за скорости.
В чём он был не хорош (опять же, субъективно):
- Всё ещё не релизнута версия 1.0
- Ограниченная кастомизация
- Не очень качественная проработка нюансов
На последнем остановлюсь подробнее. С моей точки зрения, Esbuild хорош, но хорош в узком наборе задач, а пытался он решить очень широкий. Код минифицирует, но не так качественно, как, например, SWC. CSS собирает (и даже префиксы генерить умеет) – но собирает его, опять же, с упущениями. Собирать код под старые браузеры может – но в моменте могло оказаться, что “уйти в прошлое” он достаточно глубоко не может.
Вкупе с недостаточной кастомизированностью всё это ощущалось, как хороший инструмент, но который не позволял решить все задачи и который не решал задачу быстрого старта проекта для браузера. Хотя знатоки Esbuild меня тут поправят.
Vite на фоне Esbuild представляет собой более полное решение, с более богатым апи и настройками. По сути, он предлагает “коробочное” решение рядовых задач, в то время как Esbuild так и остался на вторых ролях.
Rolldown
Rolldown был призван решить проблемы подхода, который предложил Vite. У Vite были явные плюсы, но две системы сборки приводили к несовместимостям и разной работе кода, а комбайн из внутренних инструментов работал исключительно хорошо, но всё же обладал недостатками.
Rolldown решает ту же задачу, что и Rollup – собрать код. И делает это с куда большей скоростью, схожим апи и поддержкой плагинов Rollup.
Если раньше Vite не мог позволить использовать Rollup для полной сборки в дев-режиме из-за скорости, то с Rolldown это проблема решается. А если использовать один инструмент для разработки (дев) и продакшена – то и плагины будут работать и там и там.
И Rolldown создавался специально для Vite! Но может быть использован отдельно.
Помимо всего прочего, Rolldown нацелился на встройку возможностей из плагинов: TypeScript есть из коробки, JSX – тоже.
Очень важная особенность – поддержка CommonJS тоже есть из коробки. Интеграция разношёрстного кода должна стать проще.
Ещё один плюс для разработчиков, которые хотят всё точно настроить – возможность разбивать код на чанки а-ля Webpack. Кто-то может сказать, что в некоторых случаях настройка Webpack позволяла сделать больше, чем в Rollup, и теперь и это тоже внедрено в Rolldown.
Esbuild vs Rolldown
В чём же главное отличие от того, что у нас уже было в Esbuild?
По скорости как будто получается один порядок чисел и там и там.
А вот по гибкости и по возможности настройки Rolldown должен показать себя сильно лучше, чем Esbuild. Вместе с Vite будет то самое коробочное решение для большинства современных задач фронтенда.
Frontend 2026
Мне видится, что всё больше проектов будут стартовать с Vite и Rolldown, и это станет стандартом ближайшие годы. Если вы ещё не пробовали Vite – обязательно попробуйте (особенно, если вы привыкли к Webpack).
Если на вашем проекте уже Vite, но старой версии – запланируйте миграцию. Используйте гайды, чтобы предусмотреть все грабли.
Rolldown на практике
Я перевёл несколько своих несложных проектов на Vite 8 с Rolldown. В простых случаях это просто.
Однако один проект в моменте я обновить не смог, и дело оказалось в том самом код-сплиттинге, который был прокачан в Rolldown по сравнению с Rollup. Я просто не смог получить нужное мне разбиение на файлы, которое спокойно работало в старой версии. Буду пробовать на релизной версии Rolldown, возможно, это уже исправили.
Ещё одна точка, которая вызывает опасения – плагины. Заявлена поддержка JS плагинов, однако есть опасения, что на практике будет не всё так радужно. Время покажет.
По всей видимости, может пригодиться и навык отладки Rust (язык, на котором написан Rolldown). Раньше, если что-то не работало, можно было спокойно отладить понятный JS код. Сейчас так сделать уже не получится.
Итого
Rolldown 1.0 – знаковое событие в мире фронтенда. Спустя годы это может оказаться переломным моментом, в который большинство разработчиков перешло от одного инструмента к другому, а тренды поменялись.
Обязательно запланируйте время на то, что бы на него посмотреть, будь то отдельно или в составе Vite 8.
Это не значит, что все остальные инструменты отменяются, но это может здорово изменить в лучшую сторону ваши ежедневные задачи.
Обсудить в Telegram



