Webpack Sandbox

Репозиторий содержит итоги самообучения по курсу LECTRUM, посвящённому Вебпаку. Сборка производилась на примере модулей с расширением JS+React. Репозиторий заполнялся по веткам формата lesson-0, где NUMBER – номер урока. Самый последний урок содержит наиболее актуальные модули.

Список тем курса

Тема 1

  • Введение в webpack
  • Что такое bunder и task runner, и разница между ними
  • Концепты entry, output, dependency graph, loader, plugin
  • Подключение webpack-cli к webpack
  • Создание первой конфигурации webpack
  • Подключение первого плагина — html-webpack-plugin

Тема 2

  • Выделение констант из конфига
  • Перевод скриптов вебпака на Node API
  • Тема лоадеров
  • Тема плагинов
  • Обработка вебпаком css
  • Настройка сервера разработки
  • Настройка hot module replacement

Тема 3

  • Разделение конфига на common, dev, prod
  • Разбор механизмов babel
  • Подключение PostCSS - CSS Modules

Тема 4

  • Перевод конфига webpack на esm
  • Включение source maps
  • Разделение конфига webpack на модули
  • Добавление поддержки png, jpeg, svg

Тема 5

  • Прокачка загрузки CSS для production
  • Оптимизация изображений
  • Переменные окружения (начало: 1 ч. 36 мин.)

Тема 6

  • Анализ сборки
  • Разбор webpack runtime
  • Разбор свойств оптимизации webpack

Тема 7

  • Tree shaking
  • Хеширование ассетов
  • Кеширование
  • Code splitting

Тема 8

  • Проблемы, связанные с code splitting и их решение
  • Code splitting React-приложений
  • Shimming
  • Глобальное управление сборкой
  • Материалы для дальнейшего изучения webpack

Установка Вебпака и базовых зависимостей

Введите в терминале команду: yarn add webpack webpack-cli --dev

Запуск сборки Вебпака

Введите в терминале команду: npx webpack --mode=development

Улучшение читабельности сборки (за счёт линтера Prettier)

Введите в терминале команду: yarn prettier --write .. После ввода команды результат читабельности появится в /dist/main.js.

Описание зависимостей

Зависимость Тип Описание
webpack Основа Базовый функционал Вебпака
html-webpack-plugin Плагин Генератор корневого файла HTML на основе шаблона
mini-css-extract-plugin Плагин Плагин для обработки Вебпаком модулей с расширением CSS (для прода)
css-loader Лоадер Лоадер для обработки Вебпаком модулей стилей (для дева)
style-loader Лоадер Лоадер для обработки Вебпаком модулей стилей (для дева)
babel-loader Лоадер Лоадер для транспиляции ES6/ES2015 в более ранние версии синтаксиса JS
react-hot-loader Лоадер Позволяет в режиме разработки использовать горучую перезагрузку React-компонентов
@babel/preset-env Пресет Подстраивает окружение транслитератора Babel под нужное нам
@babel/preset-react Пресет Адаптирует код Реакта под чистый JS
webpack-cli Интерфейс командной строки для управления настройками Вебпака, если не используется Node.js
webpack-dev-server Прослайка между фреймворком express.js и Вебпаком для ссоздания дев-сервера
webpack-hot-middleware Библиотека для отслеживания изменений в бандле
serve Локальный запуск и проверка изенений бандла Вебпака
prettier Преобразование минифицированного кода в читабельный код
chalk Цветовая обработка логов в консоли
@babel/core Транспиляция ES6/ES2015 в более ранние версии синтаксиса JS