RSPack 2.0: ByteDance ускорил сборку, перешёл на ESM и сократил зависимости

ByteDance, компания, стоящая за TikTok, выпустила RSPack 2.0 — новую мажорную версию своего сборщика JavaScript, ориентированного на высокую производительность. Релиз принёс не только улучшение скорости сборки, но и архитектурные изменения: ядро полностью переведено на ECMAScript модули (ESM), сокра

RSPack 2.0: ByteDance ускорил сборку, перешёл на ESM и сократил зависимости

ByteDance, компания, стоящая за TikTok, выпустила RSPack 2.0 — новую мажорную версию своего сборщика JavaScript, ориентированного на высокую производительность. Релиз принёс не только улучшение скорости сборки, но и архитектурные изменения: ядро полностью переведено на ECMAScript модули (ESM), сокращено количество зависимостей, а также добавлена поддержка React Server Components (RSC). Уже сейчас инструмент загружается более 5 миллионов раз в неделю через npm, что свидетельствует о растущем интересе сообщества.

RSPack 2.0: ключевые улучшения и производительность

RSPack 2.0 демонстрирует значительный прирост производительности по сравнению с предыдущей версией и основными конкурентами. Согласно бенчмаркам, опубликованным командой разработчиков, время холодной сборки для типичного приложения сократилось на 30–40% по сравнению с RSPack 1.x. В сравнении с Webpack 5 прирост может достигать 5–10 раз в зависимости от сложности проекта. Эти результаты достигаются за счёт переписанного ядра на чистом ESM, оптимизации статического анализа и более эффективного алгоритма разрешения зависимостей. Разработчики ByteDance отмечают, что новая версия также уменьшила размер nodemodules на 25% за счёт отказа от устаревших и дублирующихся пакетов.

Предыстория и контекст

RSPack появился в 2023 году как ответ ByteDance на потребность в быстром сборщике для крупномасштабных проектов. Инструмент написан на Rust, что изначально давало ему преимущество в скорости перед Webpack и другими сборщиками на JavaScript. За два года проект прошёл путь от внутреннего инструмента до open-source решения с активным сообществом. Переход на ESM-ядро в версии 2.0 — логичный шаг, учитывая общий тренд индустрии на отказ от CommonJS и использование нативных модулей браузера. Поддержка RSC делает RSPack привлекательным для разработчиков на React, работающих с серверными компонентами, что особенно важно для Next.js-подобных фреймворков.

Чем RSPack 2.0 отличается от Webpack и Vite?

Главное отличие RSPack от Webpack — использование Rust для критических частей сборщика, что обеспечивает более высокую скорость. В отличие от Vite, который использует нативные ESM в режиме разработки и Rollup для продакшена, RSPack предлагает единый инструмент для обеих фаз, что упрощает конфигурацию. RSPack 2.0 также поддерживает плагины Webpack, что облегчает миграцию существующих проектов. Однако в версии 2.0 команда объявила о постепенном отказе от полной совместимости с Webpack API в пользу собственного, более производительного интерфейса плагинов.

Технические подробности: чистое ESM-ядро и статический анализ

Основное архитектурное изменение в RSPack 2.0 — полный переход ядра на ECMAScript модули. Это означает, что сам сборщик и все его внутренние модули загружаются как ESM, что улучшает совместимость с современными средами выполнения Node.js и позволяет использовать преимущества tree-shaking на уровне ядра. Улучшенный статический анализ теперь точнее определяет неиспользуемый код, что сокращает размер финального бандла. Кроме того, RSPack 2.0 включает новый алгоритм разрешения модулей, который быстрее обрабатывает сложные цепочки импортов, типичные для монорепозиториев. Поддержка RSC реализована через встроенный плагин, который автоматически разделяет клиентский и серверный код.

Как RSPack 2.0 влияет на скорость сборки в реальных проектах?

На практике команды, перешедшие на RSPack 2.0, сообщают о сокращении времени сборки в 2–3 раза по сравнению с Webpack 5. Например, для проекта с 10 000 модулей холодная сборка занимает менее 10 секунд, а горячая перезагрузка происходит практически мгновенно. Это достигается за счёт параллельной обработки на Rust и минимизации операций ввода-вывода. Для разработчиков, работающих в монорепозиториях, новый алгоритм разрешения модулей особенно полезен: он кэширует результаты и избегает повторного анализа зависимостей.

Кого затронет и как

RSPack 2.0 в первую очередь ориентирован на разработчиков фронтенда, работающих с крупными проектами на React, Vue или Angular. Для команд, использующих Webpack, миграция на RSPack может дать существенное ускорение сборки без полной перестройки конфигурации — в версии 2.0 сохранена совместимость с большинством Webpack-плагинов. Разработчики, уже использующие RSPack 1.x, получат автоматические улучшения производительности после обновления, но должны учесть, что некоторые устаревшие API были удалены. В русскоязычном сообществе инструмент пока менее популярен, чем за рубежом, но благодаря открытому исходному коду и активности ByteDance интерес к нему растёт.

Что будет дальше

Команда RSPack планирует дальнейшее улучшение производительности и расширение экосистемы. В дорожной карте — нативная поддержка SWC и Babel для транспиляции, улучшенная интеграция с фреймворками, а также инструменты для анализа бандла. Вероятно, RSPack станет стандартом для проектов ByteDance и постепенно вытеснит Webpack в тех сценариях, где скорость сборки критична. В ближайшие месяцы ожидается выход стабильной версии 2.0 и публикация подробного руководства по миграции.

Итог

RSPack 2.0 — это зрелый инструмент, который предлагает реальные преимущества в скорости и современной архитектуре для фронтенд-разработки. Если вы работаете с большими проектами и устали от долгих сборок Webpack, стоит присмотреться к RSPack. Переход на ESM-ядро и поддержка RSC делают его перспективным выбором для современных веб-приложений.