Налаштування 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
    1141
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060