В чем разница между Plugin и Module в Webpack

«В чем разница между Plugin и Module в Webpack» — вопрос из категории Архитектура, который задают на 10% собеседований Frontend Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Плагины (Plugins) и модули (Modules) в Webpack выполняют разные функции:

Модули:

  • Обрабатывают отдельные файлы (например, .js, .css, .png)
  • Используют лоадеры (rules в конфиге) для трансформации файлов
module: {
  rules: [
    { test: /.css$/, use: ['style-loader', 'css-loader'] }
  ]
}

Плагины:

  • Работают на уровне всей сборки
  • Выполняют сложные задачи: оптимизация, создание HTML-файлов и т.д.
plugins: [
  new HtmlWebpackPlugin({ template: './src/index.html' })
]

Ключевое отличие: модули трансформируют файлы по одному, а плагины работают с результатом всей сборки.