Чтобы понять, что такое webpack и webpack cli, нужно пробежаться немного по теории и затем опробовать его на собственном боевом проекте.
Webpack — это специальный инструмент, который призван объединять множество модулей JavaScript в один единый файл. Webpack обычно называют сборщиком модулей. То есть при большом объеме различных модулей, он создает 1 (иногда может быть и больше, если это необходимо) большой файл, чтобы осуществить запуск вашего приложения. Но это не все, на что способен этот инструмент.
Поэтому можно сказать, что «вебпак»:
собирает в единый файл множество небольших модулей JS;
может следить за тем, как происходят изменения в коде, и повторно выполнять некоторые задачи;
способен «откатить» новейшую версию JavaScript до предыдущего стандарта ES5;
может «изменить» CoffeeScript в JavaScript;
способен запускать встроенный локальный сервер;
имеет возможность делить выходные файлы на несколько файлов, чтобы не «зависала» загрузка страницы из-за «тяжелого» JS-документа;
и др.
Webpack способен работать не только во frontend, его также активно используют в backend, особенно на Node.js.
Настройка Webpack для React
Предположим, что у вас уже установлен React со всеми необходимыми компонентами и папками. Теперь дело за малым — установить Webpack.
Для этого нужно установить всего 2 компонента:
webpack;
webpack-cli.
Это можно сделать при помощи:
Yarn. Тогда команда установки будет выглядеть так: yarn add webpack webpack-cli -D
Npm. В этом случае команда установки будет выглядеть так: npm i webpack webpack-cli —save-dev
Настройка Webpack для React
Если вы устанавливаете 4-ю версию и выше, то не потребуется настройка webpack на React, но это при условии, что будут соблюдаться определенные правила:
./src/index.js — это точка входа для «вебпак»;
./dist/main.js — это точка выхода данного инструмента;
«вебпак» должен работать в production mode.
Если понадобятся более тонкие настройки этого инструмента, то это можно сделать в файле webpack.config.js, который хранится в корневой папке проекта.
Плагины и загрузчики Webpack
«Вебпак» собирает один файл JS из мелких модулей. Такой файл называется бандл. Но бывают моменты, когда вам нужно проводить какие-то операции с кодом после сборки бандла или же необходимо выполнить какие-то задачи непосредственно с бандлом. В этом случае вам помогут плагины, так как «чистый» webpack не обладает такими возможностями, а плагины делают его еще более мощным и функциональным. Рассмотрим только два самых необходимых плагина.
Плагины webpack:
HTMLWebpackPlugin. Основной задачей этого плагина является налаживание более тесного функционирования «вебпак» и HTML. К примеру, это плагин может создать index.html в одном расположении с бандлом, а также добавить на него URL прямо в бандл. Если выбирать список лучших бездепозитных бонусов по отзывам, то стоит отдавать предпочтение TOP10 казино. Только на специализированных форумах есть казино ТОП отзывы, которые написаны правдиво, и они дают возможность подобрать надежный клуб для игры.
EnvironmentPlugin. Актуален как раз при работе с React, особенно когда вы хотите инсталлировать process.env.NODE_ENV в production, перед тем как «развернуть» собственное приложение. Это как раз способен выполнить данный плагин. Кстати, он не требует дополнительной установки, так как присутствует по умолчанию.
Помимо плагинов, есть еще более «мелкие» расширения — это загрузчики. Как правило, они нужны для работы с другими расширениями файлов или с компонентами других языков программирования или фреймворков JavaScript. К примеру:
cson-loader— для работы с файлами JSON;
html-loader— для экспорта кода html;
css-loader— для работы с файлами css;
и др.
Заключение
Вы узнали, что такое webpack и webpack cli и то, что настройка их на React практически не нужна, так как, начиная с 4-й версии, все делается по умолчанию.
Также хотелось бы еще добавить, что у «вебпак» есть два режима работы:
Режим разработки. Тут нет ничего лишнего, webpack просто весь имеющийся код JavaScript загружает в браузер, пытаясь ускорить загрузку программы.
Режим производства. Тут уже присутствует большое количество разносторонних оптимизаций и минификация.
Другое