Что такое Webpack?

Согласно официальному сайту, Webpack - это сборщик статических модулей для современных приложений JavaScript.

Webpack - это просто инструмент для объединения всех ваших файлов javascript, чтобы он работал.

Webpack можно использовать, когда вы создаете сложное приложение Front End со множеством статических ресурсов, не связанных с кодом, таких как CSS, изображения, шрифты и т. Д.
Если ваше приложение довольно мало, и вы не используете Если у вас нет много статических ресурсов, и вам нужно создать только один файл Javascript для обслуживания клиента, тогда Webpack может быть больше накладных расходов, чем вам нужно.

Webpack может выполнять множество операций. Например:

1. Конвертируйте ваши файлы из es6 в es5.

2. Преобразуйте ваши файлы .less или .scss в обычные .css.

3. Минимизирует ваши файлы (уменьшает размер файла)

4. Удаляет все комментарии из всех файлов (для уменьшения размера файла).

5. Поместите весь свой код в один файл .js.

6. Соберите все ваши пакеты .css в один файл.

Webpack принимает модули с зависимостями и генерирует статические ресурсы, которые представляют эти модули.

Базовая настройка

Сначала давайте создадим каталог, инициализируем npm, установим webpack локально и установим webpack-cli (инструмент, используемый для запуска webpack из командной строки):

mkdir webpack-demo
cd webpack-demo
npm init -y
npm install webpack webpack-cli — save-dev

Мы можем проверить, что библиотеки были успешно установлены, проверив файл package.json.

“devDependencies”: {
 “webpack”: “⁵.20.2”,
 “webpack-cli”: “⁴.5.0”,
}

Мы немного изменим нашу структуру каталогов, отделив «исходный» код (./src) от нашего «дистрибутивного» кода (./dist). «Исходный» код - это код, который мы будем писать и редактировать. Код «распространения» - это минимизированный и оптимизированный результат нашего процесса сборки, который в конечном итоге будет загружен в браузер.

После установки этих пакетов нам нужно создать файл webpack.config.js, который экспортирует объект, содержащий настройки веб-пакета.

module.exports = {}

Краткое введение в webpack

Чтобы начать работать с webpack, вам необходимо ознакомиться с четырьмя основными концепциями. (Вход, выход, загрузчики, плагины)

  1. первая основная концепция называется « записью».
module.exports = { 
  entry: ‘./src/index.js’
};

Объект entry - это то место, откуда веб-пакет пытается начать сборку пакета. Webpack использует это как отправную точку.

2. Вторая основная концепция называется « вывод ».

Свойство output сообщает веб-пакету, где передавать создаваемые им пакеты и как называть эти файлы (по умолчанию это ./dist).

const path = require(‘path’);

module.exports = {
  entry: ‘./src/index.js’,
  output: {
    path: path.resolve(__dirname, ‘dist’),
    filename: ‘./bundle.js’
  },
}

В этом примере output.filename отвечает за имя файла, а output.path - за каталог, в котором будет расположен файл.

3. Третья основная концепция - это « загрузчики ».

Загрузчики берут содержимое файлов, а затем преобразуют его по мере необходимости и включают результат преобразования в общий пакет.

const path = require(‘path’);

module.exports = {
  entry: ‘./src/index.js’,
  output: {
    path: path.resolve(__dirname, ‘dist’),
    filename: ‘./bundle.js’
  },
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [‘style-loader’, ‘css-loader’],
      },
      {
        test: /\.(png|svg|jpg|jpeg|gif|mp4)$/i,
        use: {
          loader: ‘file-loader’,
          options: {
            name: ‘[name].[hash].[ext]’,
            outputPath: ‘imgs’,
          },
        },
      },
    ],
  },
}

Использование загрузчиков преследует две цели:

1. Свойство test указывает, какие файлы следует преобразовать.

2. Свойство use указывает, какой загрузчик следует использовать для выполнения преобразования.

Список самых популярных загрузчиков

4. четвертая основная концепция - это «плагины».

Если загрузчики используются для преобразования определенных типов модулей, плагины могут использоваться для выполнения гораздо более широкого круга задач.

Чтобы использовать плагин, вам необходимо сначала установить его

npm i html-webpack-plugin -D

затем используйте require () и добавьте его в массив плагинов

const path = require(‘path’);
const HtmlWebpackPlugin = require(‘html-webpack-plugin’);
module.exports = {
  entry: ‘./src/index.js’,
  output: {
    path: path.resolve(__dirname, ‘dist’),
    filename: ‘./bundle.js’
  },
  plugins: [
    new HTMLWebpackPlugin()
  ]
  module: {
    rules: [
      {
        test: /\.css$/i,
        use: [‘style-loader’, ‘css-loader’],
      },
      {
        test: /\.(png|svg|jpg|jpeg|gif|mp4)$/i,
        use: {
          loader: ‘file-loader’,
          options: {
            name: ‘[name].[hash].[ext]’,
            outputPath: ‘imgs’,
          },
        },
      },
    ],
  },
}

HtmlWebpackPlugin создаст новый файл index.html в каталоге dist и добавит к нему связанную ссылку.

Список самых популярных плагинов

Запустить веб-пакет

У нас есть файл package.json, в котором мы можем создать скрипт для запуска webpack

Откройте файл package.json и измените объект сценария следующим образом:

“scripts”: {
  “test”: “echo “Error: no test specified” && exit 1",
  “dev”: “webpack — mode development”,
  “build”: “webpack — mode production”
},

Теперь, когда вы запустите команду npm run build в терминале, будет запущен веб-пакет, который создаст оптимизированный файл index_bundle.js и поместит его в dist

Заключение

Webpack - полезный и мощный инструмент. В этой статье представлены только его основные возможности. Но webpack может больше. Вот список ресурсов для дальнейшего изучения возможностей сборщика:

Официальная документация webpack.