Настраивал ли Webpack с нуля

Ответ

Да, настраивал. Основные шаги:

  1. Установка webpack, webpack-cli, webpack-dev-server
  2. Создание конфига webpack.config.js
  3. Настройка entry, output, loaders (для JS, CSS, изображений)
  4. Добавление плагинов (HtmlWebpackPlugin, MiniCssExtractPlugin и др.)
  5. Конфигурация dev-сервера и оптимизация для production.

Пример минимальной конфигурации:

module.exports = {
  entry: './src/index.js',
  output: {
    filename: 'bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  module: {
    rules: [
      { test: /.js$/, use: 'babel-loader' },
      { test: /.css$/, use: ['style-loader', 'css-loader'] }
    ]
  },
  plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })]
};

Также настраивал разделение кода, кеширование, environment variables.

Ответ 18+ 🔞

А, настраивал, блядь! Ну, это же классика, ёпта, как Герасим Муму топил — по шагам, но с чувством, с расстановкой, с ебаным осознанием происходящего.

Слушай, вот как это было, по косточкам разберу, а то ты смотришь на меня, как на идиота, который про «Муму» рассказывает.

Шаг первый, основа основ. Ставишь, сука, трёх китов: webpack, webpack-cli и webpack-dev-server. Без них ты как Герасим без метлы — нихуя не подметишь, только мычать «му-му» будешь в пустой папке.

Шаг второй — священный свиток. Создаёшь файлик webpack.config.js. Это твоя карта, твой план, твоя мантра. Без него webpack — просто злая, немая туша, которая нихуя не понимает.

Шаг третий — загрузка мозгов (loaders). Вот смотри, пример минимальной, но боевой конфигурации, чтобы не охуеть с непривычки:

module.exports = {
  entry: './src/index.js', // Отсюда, блядь, всё начинается. Точка входа, как дверь в квартиру.
  output: {
    filename: 'bundle.js', // А сюда всё выльётся одним файлом. Иногда не одним, но это уже высший пилотаж.
    path: path.resolve(__dirname, 'dist') // Папка `dist` — это святое. Туда всё складывается, как в амбар.
  },
  module: {
    rules: [ // А вот тут правила, ёпта! Кто как будет обработан.
      { test: /.js$/, use: 'babel-loader' }, // Всякую современную JS-поебень превращает в старьё, чтобы старые браузеры не выли.
      { test: /.css$/, use: ['style-loader', 'css-loader'] } // CSS вытащит из модулей и в голову HTML встроит. Магия, блядь!
    ]
  },
  plugins: [new HtmlWebpackPlugin({ template: './src/index.html' })] // Плагин — это как умный помощник. Этот, например, HTML-файл сам соберёт и скрипт туда прилепит. Красота!
};

Шаг четвёртый — плагины, ёбана! HtmlWebpackPlugin — это святое, MiniCssExtractPlugin — чтобы CSS отдельным файлом вышло, а не в шапке болталось. Без них — живи в каменном веке.

Шаг пятый — разделение властей. Настроил разделение кода (code splitting), чтобы не грузить пользователю овердохуища мегабайт за раз. Кеширование, environment variables — это уже для продвинутых, чтобы на продакшене всё летало, а не ползало, как рак.

И да, отдельно, блядь, конфигурил дев-сервер, чтобы при каждом сохранении файла не обновлять страницу вручную, как лох. И оптимизацию для production — это отдельная песня, там такой трэш и угар начинается с минификацией, сжатием и прочей ебалой, что волосы дыбом встают.

В общем, настроил, блядь. Теперь всё работает. Не то чтобы идеально, но работает. Как Герасим после утопления Муму — вроде жив, но совесть, сука, гложет за каждый лишний килобайт в бандле.