Files
gsap-carousel/config/build/buildWebpackConfig.ts
Ilia Mashkov 1376a20c90 feat: модульная конфигурация webpack с React 19 и TypeScript 5
- Создана модульная архитектура webpack конфигурации в config/build/
- Настроены loader'ы: Babel, TypeScript, CSS/SCSS, File, SVGR
- Добавлены плагины: HtmlWebpackPlugin, MiniCssExtractPlugin, ReactRefresh, BundleAnalyzer
- Настроен dev-сервер с HMR и поддержкой SPA роутинга
- Добавлена полная JSDoc документация на русском языке
2025-11-19 10:08:33 +03:00

61 lines
2.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import webpack from 'webpack'
import { buildDevServer } from './buildDevServer'
import { buildLoaders } from './buildLoaders'
import { buildPlugins } from './buildPlugins'
import { buildResolvers } from './buildResolvers'
import { BuildOptions } from './types/config'
/**
* Главная функция сборки конфигурации webpack
*
* Объединяет все модули конфигурации (loaders, plugins, resolvers, devServer)
* в единую конфигурацию webpack.
*
* Основные настройки:
* - mode: режим сборки (development/production)
* - entry: точка входа приложения (src/index.tsx)
* - output: настройки выходных файлов с хешами для кеширования
* - module.rules: правила обработки различных типов файлов
* - resolve: настройки разрешения модулей
* - plugins: плагины для расширения функциональности webpack
* - devtool: source maps для отладки (только в dev режиме)
* - devServer: настройки dev-сервера (только в dev режиме)
*
* @param {BuildOptions} options - Полные опции сборки
* @returns {webpack.Configuration} Готовая конфигурация webpack
*
* @example
* const config = buildWebpackConfig({
* mode: 'development',
* paths: { entry: 'src/index.tsx', ... },
* isDev: true,
* port: 3000,
* open: true,
* apiUrl: 'http://localhost:8000',
* project: 'frontend'
* })
*/
export function buildWebpackConfig(
options: BuildOptions
): webpack.Configuration {
const { mode, paths, isDev } = options
return {
mode,
entry: paths.entry,
output: {
path: paths.build,
filename: '[name].[contenthash].js',
clean: true,
publicPath: '/',
},
module: {
rules: buildLoaders(options),
},
resolve: buildResolvers(options),
plugins: buildPlugins(options),
devtool: isDev ? 'inline-source-map' : undefined,
devServer: isDev ? buildDevServer(options) : undefined,
}
}