Настройка бандлера 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 дня.