Налаштування бандлера Rspack для веб-проекту

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Налаштування бандлера Rspack для веб-проекту
Середня
від 1 робочого дня до 3 робочих днів
Часті питання

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

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Налаштування бандлера Rspack для веб-проекту

Rspack — збирач від ByteDance (TikTok), написаний на Rust з webpack-сумісним API. Головна ідея: взяти існуючий webpack-конфіг, змінити require('webpack') на require('@rspack/core'), отримати побудову в 5–10 разів швидше без переписування конфіги. На практиці сумісність не стопроцентна, але для більшості проектів — цілком робочий шлях.

Чому Rspack, а не Vite

Vite — відмінний вибір для нового проекту. Rspack потрібен коли:

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

Встановлення

npm install --save-dev @rspack/core @rspack/cli

Для React-проектів з TypeScript:

npm install --save-dev @rspack/core @rspack/cli typescript ts-loader
# або
npm install --save-dev @rspack/core @rspack/cli builtin:swc-loader  # вбудований

rspack.config.ts

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',  // вбудований SWC, швидше за ts-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,
  },
});

Міграція з Webpack

Кроки для типового webpack-проекту:

# 1. Встановлюємо Rspack
npm install --save-dev @rspack/core @rspack/cli

# 2. Міняємо скрипти в package.json
{
  "scripts": {
    "dev": "rspack dev",
    "build": "rspack build"
  }
}
// webpack.config.js → rspack.config.js
// Міняємо імпорт:
// const webpack = require('webpack');
const { rspack } = require('@rspack/core');

// Більшість плагінів webpack працюють, але вбудовані замінюємо:
// webpack.DefinePlugin         → rspack.DefinePlugin (сумісний)
// webpack.HtmlWebpackPlugin    → rspack.HtmlRspackPlugin (вбудований, швидше)
// MiniCssExtractPlugin         → rspack.CssExtractRspackPlugin (вбудований)

Module Federation

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 — обгортка над Rspack

Для нових проектів без legacy webpack-конфіги краще дивитись на Rsbuild — webpack-сумісний інструмент поверх Rspack з батарейками:

npm create rsbuild@latest
// rsbuild.config.ts
import { defineConfig } from '@rsbuild/core';
import { pluginReact } from '@rsbuild/plugin-react';
import { pluginSass } from '@rsbuild/plugin-sass';

export default defineConfig({
  plugins: [pluginReact(), pluginSass()],
  source: {
    entry: { index: './src/index.tsx' },
    alias: { '@': './src' },
  },
  output: {
    distPath: { root: 'dist' },
  },
  server: {
    port: 3000,
  },
});

Rsbuild = Rspack + готова конфіга + плагін-система рівня Vite.

Сумісність плагінів

Більшість webpack-плагінів працюють, але є виключення. Список перевірених плагінів на rspack.dev/guide/compatibility/plugin. З несумісних: деякі плагіни використовуючи низькорівневі webpack compilation hooks (compiler.hooks.thisCompilation, кастомні tapable-хуки).

Перевірити сумісність конкретного плагіну:

# Запустити побудову та дивитись попередження
rspack build 2>&1 | grep -i "unsupported\|warning\|deprecated"

Терміни

Заміна webpack на Rspack в проекті без Module Federation: 4–8 годин включаючи тестування. Настройка Rsbuild з нуля для нового React/TypeScript проекту: 1–2 години. Настройка Module Federation між кількома програмами: 1–2 дні.