2. Установка и базовая конфигурация
Настройка Webpack с нуля — важный навык для любого фронтенд-разработчика. Понимание каждого шага установки помогает разобраться в том, как работает сборщик, и избежать типичных ошибок в реальных проектах.
Шаг 1 — Инициализация проекта
Заголовок раздела «Шаг 1 — Инициализация проекта»mkdir my-webpack-appcd my-webpack-appnpm init -yПосле этого в папке появится package.json. Флаг -y отвечает на все вопросы утвердительно.
Шаг 2 — Установка Webpack
Заголовок раздела «Шаг 2 — Установка Webpack»# Основные пакеты (всегда в devDependencies)npm install --save-dev webpack webpack-cli
# Проверка версийnpx webpack --version# webpack: 5.x.x# webpack-cli: 5.x.xВажно: Webpack устанавливается только в devDependencies — он нужен только для сборки, не для runtime.
Шаг 3 — Структура проекта
Заголовок раздела «Шаг 3 — Структура проекта»my-webpack-app/├── src/│ ├── index.js ← точка входа│ └── utils.js├── public/│ └── index.html ← HTML шаблон├── dist/ ← сюда Webpack пишет бандлы (создаётся автоматически)├── webpack.config.js ← конфиг Webpack└── package.jsonШаг 4 — webpack.config.js
Заголовок раздела «Шаг 4 — webpack.config.js»const path = require('path');const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = { // Режим сборки mode: 'development',
// Точка входа entry: './src/index.js',
// Настройки вывода output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js', clean: true, // Очищать dist перед каждой сборкой (Webpack 5) },
// Плагины plugins: [ new HtmlWebpackPlugin({ template: './public/index.html', }), ],
// Source maps для удобной отладки devtool: 'eval-source-map',};Шаг 5 — npm scripts
Заголовок раздела «Шаг 5 — npm scripts»{ "scripts": { "build": "webpack --config webpack.config.js", "build:prod": "webpack --config webpack.config.js --mode production", "watch": "webpack --watch", "dev": "webpack serve --open" }}Теперь запустить сборку можно командой:
npm run buildЧто значит path.resolve(__dirname, 'dist')?
Заголовок раздела «Что значит path.resolve(__dirname, 'dist')?»__dirname— абсолютный путь до директории текущего файла (webpack.config.js)path.resolve()— создаёт абсолютный путь, объединяя сегменты- Результат:
/home/user/projects/my-app/dist
Webpack всегда ожидает абсолютные пути для output.path — именно поэтому нельзя написать просто './dist'.
Опциональные пакеты для старта
Заголовок раздела «Опциональные пакеты для старта»# Dev сервер с HMRnpm install --save-dev webpack-dev-server
# HTML плагинnpm install --save-dev html-webpack-plugin
# Babel для ES6+ и Reactnpm install --save-dev babel-loader @babel/core @babel/preset-env @babel/preset-react
# TypeScriptnpm install --save-dev typescript ts-loaderНиже — интерактивный конструктор начальной конфигурации Webpack. Включайте/выключайте опции и смотрите как меняется webpack.config.js.