Настройка Rspack: быстрая миграция с Webpack и оптимизация сборки

Сборка на Webpack занимает минуты, заставляя разработчиков ждать, а бизнес — терять время. Мы настраиваем Rspack — быстрый Rust-сборщик с webpack-совместимым API, который ускоряет разработку без переписывания конфигурации. Наша команда реализует миграцию под ключ, обеспечивая совместимость с плагинами и последующую поддержку.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка Rspack: быстрая миграция с Webpack и оптимизация сборки
Средний
от 1 дня до 3 дней
Часто задаваемые вопросы

Мы часто сталкиваемся с проектами, где сборка на Webpack занимает минуты, а не секунды. Разработчики тратят время на ожидание, а клиенты — деньги. Rspack — сборщик от ByteDance (TikTok), написанный на Rust с webpack-совместимым API — решает эту проблему. По нашим данным, замена Webpack на Rspack на типовом React-проекте с 2000+ компонентов сокращает время dev-сборки с 45 до 8 секунд, а полную продакшен-сборку с 120 до 15 секунд. Это ускорение напрямую сокращает затраты на разработку: меньше времени на сборку — больше времени на фичи. Главная идея: взять существующий webpack-конфиг, поменять require('webpack') на require('@rspack/core'), получить сборку в 5–10 раз быстрее без переписывания конфигурации. На практике совместимость не стопроцентная, но для большинства проектов — вполне рабочий путь. Закажите настройку Rspack под ключ — мы гарантируем совместимость и быстрый результат.

Почему Rspack, а не Vite?

Vite — отличный выбор для нового проекта. Rspack нужен когда:

  • Уже есть большой webpack-конфиг, который сложно переписывать под Vite
  • Используются специфические webpack-плагины без аналогов в Vite
  • Нужна совместимость с Module Federation (Rspack поддерживает MF v1 и v2)
  • Проект использует Rsbuild или Rsdoctor из экосистемы ByteDance

Vite использует нативную модульную систему браузера в dev-режиме, но на продакшене собирает через Rollup. Rspack использует единый Rust-движок для dev и build, что упрощает конфигурацию и ускоряет финальную сборку. Если вы уже используете Rsbuild, миграция на Rspack происходит ещё быстрее — достаточно сменить адаптер.

Как мигрировать с Webpack на Rspack

Типичная миграция занимает от 4 до 8 часов. Первым делом устанавливаем пакеты: npm install --save-dev @rspack/core @rspack/cli. Затем заменяем скрипты в package.json: "dev": "rspack dev" и "build": "rspack build". После этого переименовываем webpack.config.js в rspack.config.js и заменяем импорт: const { rspack } = require('@rspack/core') вместо const webpack = require('webpack'). Наконец, адаптируем встроенные плагины: webpack.DefinePlugin → rspack.DefinePlugin, HtmlWebpackPlugin → rspack.HtmlRspackPlugin, MiniCssExtractPlugin → rspack.CssExtractRspackPlugin. Если используете ProgressPlugin или BannerPlugin, их аналоги есть в @rspack/core.

Параметр Webpack (v5) Rspack
Первая dev-сборка 45 с 8 с
Hot reload 2 с 0,5 с
Prod-сборка 120 с 15 с
Размер бандла 500 КБ 510 КБ

Как быстро настроить Rspack для React-проекта?

Типичный rspack.config.ts для React-проекта с TypeScript выглядит так:

import { defineConfig } from '@rspack/cli';
import { rspack } from '@rspack/core';
import path from 'path';

export default defineConfig({
  entry: {
    main: './src/index.tsx',
  },
  output: {
    filename: '[name].[contenthash:8].js',
    path: path.resolve(__dirname, 'dist'),
    clean: true,
  },
  resolve: {
    extensions: ['.tsx', '.ts', '.jsx', '.js'],
    alias: {
      '@': path.resolve(__dirname, 'src'),
    },
  },
  module: {
    rules: [
      {
        test: /\.(tsx?|jsx?)$/,
        use: {
          loader: 'builtin:swc-loader',
          options: {
            jsc: {
              parser: {
                syntax: 'typescript',
                tsx: true,
              },
              transform: {
                react: {
                  runtime: 'automatic',
                  development: process.env.NODE_ENV === 'development',
                  refresh: process.env.NODE_ENV === 'development',
                },
              },
            },
            env: {
              targets: 'Chrome >= 90',
            },
          },
        },
        exclude: /node_modules/,
      },
      {
        test: /\.css$/,
        use: [rspack.CssExtractRspackPlugin.loader, 'css-loader', 'postcss-loader'],
      },
      {
        test: /\.(png|jpe?g|svg|gif|webp)$/i,
        type: 'asset',
        parser: {
          dataUrlCondition: {
            maxSize: 8 * 1024,
          },
        },
      },
    ],
  },
  plugins: [
    new rspack.HtmlRspackPlugin({
      template: './public/index.html',
      filename: 'index.html',
    }),
    new rspack.CssExtractRspackPlugin({
      filename: '[name].[contenthash:8].css',
    }),
    new rspack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV),
    }),
  ],
  optimization: {
    splitChunks: {
      chunks: 'all',
      cacheGroups: {
        vendor: {
          test: /[\\/]node_modules[\\/]/,
          name: 'vendors',
          priority: 10,
        },
      },
    },
  },
  devServer: {
    port: 3000,
    historyApiFallback: true,
    hot: true,
  },
});

Module Federation с Rspack

Rspack поддерживает Module Federation v2 через @module-federation/enhanced:

import { ModuleFederationPlugin } from '@module-federation/enhanced/rspack';

plugins: [
  new ModuleFederationPlugin({
    name: 'host_app',
    remotes: {
      remote_ui: 'remote_ui@http://localhost:3001/remoteEntry.js',
    },
    shared: {
      react: {
        singleton: true,
        requiredVersion: '^18.0.0'
      },
      'react-dom': {
        singleton: true
      },
    },
  }),
]

Что такое Rsbuild?

Rsbuild — обёртка над Rspack с готовой конфигурацией, похожая на Vite. Она предоставляет плагины для React, Vue, SASS и т.д. Если вы начинаете новый проект без legacy webpack-конфига, Rsbuild — лучший выбор. Настройка нового React/TypeScript проекта занимает 1–2 часа.

Совместимость плагинов

Большинство webpack-плагинов работают с Rspack, но есть исключения. Проверенные плагины перечислены на официальном сайте Rspack. Из несовместимых: некоторые плагины, использующие низкоуровневые webpack compilation hooks (compiler.hooks.thisCompilation, кастомные tapable-хуки). Проверить конкретный плагин можно командой:

rspack build 2>&1 | grep -i "unsupported\|warning\|deprecated" 

Типичные ошибки при миграции

  • Не совпадают target и окружение: Rspack по умолчанию собирает для Node.js, если не указан target: 'web'.
  • Плагины, работающие через compilation.hooks: например, webpack-manifest-plugin может требовать адаптации.
  • Использование require.context: в Rspack работает, но с ограничениями. Лучше заменить на import.meta.glob из Rsbuild.

Что входит в настройку Rspack

  • Полная миграция конфигурации с Webpack на Rspack
  • Адаптация плагинов и загрузчиков
  • Настройка Module Federation (при необходимости)
  • Оптимизация split chunks и кэширования
  • Документация по изменениям
  • Обучение команды базовым принципам
  • Поддержка в течение месяца после настройки

Сроки и стоимость

Сроки зависят от сложности проекта. Замена Webpack на Rspack без Module Federation — от 4 до 8 часов. Настройка Rsbuild с нуля — 1–2 часа. Интеграция Module Federation между несколькими приложениями — 1–2 дня. Стоимость рассчитывается индивидуально. Настройка Rspack окупается за 1-2 месяца за счёт экономии времени команды. Свяжитесь с нами — мы оценим ваш проект и предложим оптимальное решение. Закажите настройку Rspack — ускорьте разработку.

Наша компания имеет более 5 лет опыта в веб-разработке и реализовала более 50 проектов с использованием современных бандлеров. Мы гарантируем совместимость с вашей экосистемой и ускорение сборки до 10 раз.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1369
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1142
  • Разработка веб-сайта для компании ФИКСПЕР
    Разработка веб-сайта для компании ФИКСПЕР
    1060