Загрузка...
Загрузка...
Webpack — это инструмент для сборки модулей (module bundler), который превращает ваш код (и любые зависимости в виде JavaScript, CSS, картинок и т.д.) в оптимизированные файлы, готовые к развертыванию в браузере. Webpack позволяет упростить и автоматизировать процесс сборки, обеспечивает поддержку современных стандартов JavaScript (ES6/ESNext) и помогает разделять код на модули.
Code Splitting → Делит код на части для оптимизации скорости загрузки.
Tree Shaking → Удаляет неиспользуемый код, уменьшая размер бандла.
Hot Module Replacement (HMR) → Позволяет обновлять код в реальном времени без перезагрузки страницы.
Управление ассетами → Эффективно обрабатывает изображения, шрифты и другие статические файлы.
Webpack начинает с основного файла (например, index.js). Это отправная точка вашего приложения.
Анализирует зависимости проекта, отслеживая import или require в коде.
По умолчанию Webpack понимает только JavaScript и JSON. Loaders позволяют работать с другими типами файлов (CSS, изображения, TypeScript и т. д.):
Расширяют функциональность Webpack:
HtmlWebpackPlugin → Генерирует HTML-файл с подключенными бандлами.MiniCssExtractPlugin → Выносит CSS в отдельные файлы.TerserPlugin → Минимизирует JavaScript.После обработки Webpack создает оптимизированный бандл (например, bundle.js) в папке вывода (/dist).
Development:
Хранит код в удобочитаемом виде, включает sourcemaps, не минифицирует.
Полезно для локальной разработки и отладки.
Production: Минификация и оптимизация (tree shaking, code splitting), убирает комментарии, часто отключает source maps. Результат «лёгкий» и оптимизированный для боевого окружения.
// webpack.config.js
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
entry: './src/index.js', // Шаг 1: Точка входа
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'), // Шаг 5: Выходные файлы
},
module: {
rules: [
{ test: /\.js$/, use: 'babel-loader' }, // Загрузчик для JS
{ test: /\.css$/, use: ['style-loader', 'css-loader'] }, // Загрузчики для CSS
],
},
plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })], // Плагины
mode: 'development', // или 'production'
};
Webpack остаётся одним из самых популярных, несмотря на более «тяжёлый» процесс настройки, благодаря гибкости и обширной экосистеме.