feat: модульная конфигурация webpack с React 19 и TypeScript 5

- Создана модульная архитектура webpack конфигурации в config/build/
- Настроены loader'ы: Babel, TypeScript, CSS/SCSS, File, SVGR
- Добавлены плагины: HtmlWebpackPlugin, MiniCssExtractPlugin, ReactRefresh, BundleAnalyzer
- Настроен dev-сервер с HMR и поддержкой SPA роутинга
- Добавлена полная JSDoc документация на русском языке
This commit is contained in:
Ilia Mashkov
2025-11-19 09:59:39 +03:00
commit 1376a20c90
12 changed files with 493 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
/**
* Режим сборки приложения
* @typedef {'development' | 'production'} BuildMode
*/
export type BuildMode = 'development' | 'production'
/**
* Пути для конфигурации webpack
* @interface BuildPaths
* @property {string} entry - Точка входа приложения (src/index.tsx)
* @property {string} build - Директория для выходных файлов сборки (dist)
* @property {string} html - Путь к HTML шаблону (public/index.html)
* @property {string} src - Корневая директория исходного кода (src)
*/
export interface BuildPaths {
entry: string
build: string
html: string
src: string
}
/**
* Опции конфигурации сборки webpack
* @interface BuildOptions
* @property {BuildMode} mode - Режим сборки (development/production)
* @property {BuildPaths} paths - Пути для конфигурации
* @property {boolean} isDev - Флаг режима разработки
* @property {number} port - Порт для dev-сервера
* @property {boolean} open - Автоматически открывать браузер при запуске
* @property {string} apiUrl - URL API для глобальной переменной __API__
* @property {'frontend' | 'storybook' | 'jest'} project - Тип проекта для глобальной переменной __PROJECT__
*/
export interface BuildOptions {
mode: BuildMode
paths: BuildPaths
isDev: boolean
port: number
open: boolean
apiUrl: string
project: 'frontend' | 'storybook' | 'jest'
}
/**
* Переменные окружения, передаваемые в webpack
* @interface BuildEnv
* @property {BuildMode} mode - Режим сборки
* @property {number} port - Порт для dev-сервера
* @property {string} apiUrl - URL API
*/
export interface BuildEnv {
mode: BuildMode
port: number
apiUrl: string
}