На примере этого проекта рассказываем:
- Базовые параметры конфига:
- entry, output, mode
- Source maps: виды, использование нужной
webpack-dev-server- автопересборка, HMR- Длинное кеширование (Expires: max),
AssetsManifestPlugin - Копирование статических файлов:
CopyWebpackPlugin - Генерация HTML c
HtmlWebpackPlugin. - Уведомления
WebpackNotifierPlugin. - Очистка перед сборкой:
CleanWebpackPlugin - Передача параметров в JS:
DefinePlugin - Оптимизация сборки: статистика,
IgnorePlugin(на примереmoment.js) - Динамический импорт
import(./${page}), "магические" комментарии - Алиасы (короткий путь до
libиutils) - CSS:
postcss-loader(nested styles),css-loader,style-loader,file-loader/url-loader - Шаблоны с
pug-loader - Babel для использования последних фич JS:
babel-loader. MiniCssExtractPlugin.- Несколько точек входа, автовыделение общего chunk
SplitChunksPlugin(ветка entries)
Какие-то темы упустили? Вопросы/предложения – просим new issue! ♡
Где-то в примере кривой код? Ждем негодований! Даже очень просим, лучше до записи чем после! ;)
Сначала клонировать и поставить модули:
git clone https://github.com/javascript-ru/webpack-screencast
cd webpack-screencast
npm installЗапустить:
npm run devТеперь можно идти на http://localhost:8000, запущено одностраничное приложение с динамическим роутингом, шаблонами, js/css-модулями и т.п (см выше). По дизайну позже причешем.
Также есть команды:
npm run serve- только сервер (отдача файлов) из директорииdist, без сборки;npm run build- production-сборка в директориюdist(без сервера, можно в другом окне параллельноnpm run serve);npm run watch=npm run dev+ авторестарт при изменении конфига webpack;npm run lint- проверка кода ESLint.