Генератор конфигурации webpack

webpack.config.js
Результаты

Писать webpack.config.js по памяти значит помнить точную форму output, регулярное выражение test для каждого загрузчика и то, как подключаются плагины. Этот генератор превращает всё это в короткую форму: задайте входной файл, папку вывода и режим сборки, затем отметьте нужные части: TypeScript, Babel, загрузчик CSS, HtmlWebpackPlugin и сервер разработки. Он создаёт чистую, готовую к копированию конфигурацию webpack 5 с именами файлов [contenthash] и уже прописанным output.clean.

Как создать конфигурацию webpack

  1. 1

    Задайте entry и вывод

    Укажите входной файл (по умолчанию `./src/index.js`) и папку вывода (по умолчанию `dist`).

  2. 2

    Выберите режим

    Выберите `production` или `development`. Значение записывается прямо в поле `mode`.

  3. 3

    Включите загрузчики и плагины

    По необходимости включите TypeScript (`ts-loader`), Babel (`babel-loader`), загрузчик CSS (`style-loader` + `css-loader`), `HtmlWebpackPlugin` и сервер разработки.

  4. 4

    Скопируйте конфигурацию

    `webpack.config.js` обновляется в реальном времени. Нажмите кнопку копирования и вставьте его в корень проекта.

Вывод по умолчанию

При значениях по умолчанию (режим production, TypeScript, Babel, загрузчик CSS и HtmlWebpackPlugin) генератор создаёт:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  mode: 'production',
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'bundle.[contenthash].js',
    clean: true,
  },
  resolve: { extensions: ['.ts','.tsx','.js'] },
  module: {
    rules: [
      { test: /\.tsx?$/, use: 'ts-loader', exclude: /node_modules/ },
      { test: /\.jsx?$/, exclude: /node_modules/, use: 'babel-loader' },
      { test: /\.css$/, use: ['style-loader', 'css-loader'] },
    ],
  },
  plugins: [
    new HtmlWebpackPlugin({ template: './src/index.html' }),
  ],
};

Что записывает каждая опция

Опция Что добавляется в конфигурацию
entry Значение entry, напр. entry: './src/index.js'.
папка вывода output.path, вычисленный через path.resolve(__dirname, 'dist').
mode mode: 'production' или mode: 'development'.
TypeScript Правило ts-loader для .ts/.tsx и эти расширения в resolve.
Babel Правило babel-loader для .js/.jsx.
загрузчик CSS Правило, объединяющее style-loader и css-loader для .css.
HtmlWebpackPlugin Строку require и new HtmlWebpackPlugin({ template: './src/index.html' }).
сервер разработки Блок devServer, отдающий папку вывода на порту 3000 с горячей перезагрузкой.

Фиксированные значения в выводе

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

  • Имена файлов с хешем. output.filename всегда bundle.[contenthash].js, что сбрасывает кэш браузера при каждом изменении сборки.
  • Чистый вывод. output.clean: true очищает папку вывода при каждой сборке, замена clean-webpack-plugin в webpack 5.
  • CSS включается в сборку, а не извлекается. style-loader внедряет стили через JavaScript. Чтобы получить отдельный файл .css в продакшене, добавьте MiniCssExtractPlugin самостоятельно.
  • Основы сервера разработки. При включении devServer задаёт static, port: 3000 и hot: true. Опции вроде historyApiFallback или proxy добавляйте вручную, если они нужны приложению.

Как расширить дальше

Сгенерированный файл это отправная точка, а не полная продакшен-конфигурация. Обычные следующие шаги, которые вы добавляете вручную: MiniCssExtractPlugin для извлечения CSS, sass-loader для .scss, модули asset webpack 5 для изображений и шрифтов, значение devtool для source map и блок splitChunks для разделения кода.

Часто задаваемые вопросы

Для webpack 5. В выводе используются output.clean и имена файлов [contenthash], современные соглашения webpack 5, поэтому отдельный плагин очистки не нужен.

Нет, он всегда пишет webpack.config.js на JavaScript. Включение опции TypeScript добавляет правило ts-loader, чтобы webpack компилировал ваш код .ts/.tsx; формат самого файла конфигурации это не меняет.

Сгенерированный блок devServer использует порт 3000 с горячей перезагрузкой. Измените значение port в скопированном файле, если нужен другой.

Да. Каждая опция добавляет своё правило (ts-loader для .tsx?, babel-loader для .jsx?), поэтому можно включить одну, другую или обе в зависимости от того, как проект выполняет транспиляцию.

Сопутствующие инструменты

Справочная таблица ASCII

Полная таблица ASCII от 0 до 127 с десятичным, шестнадцатеричным, восьмеричным и двоичным представлением, а также записью числовых ссылок HTML, включая NUL, LF и DEL.

Справочник символов HTML

Справочник HTML-сущностей с поиском, их именованными и числовыми кодами, а также копированием специальных символов и знаков одним кликом.

Смешивание цветов

Смешайте два HEX-цвета в 2-20 равномерных образцов. Каждый промежуточный цвет показывается как HEX-код в верхнем регистре, включая оба края.

Счетчик FPS

Измерьте FPS браузера через requestAnimationFrame: сглаживание, минимальная и максимальная частота кадров, порог предупреждения и график по желанию. Работает локально, без загрузок и API.

Генератор случайных букв

Генерируйте случайные буквы A-Z. Выберите количество, верхний или нижний регистр либо смешанный вариант для игр, заданий и уроков.

Справочник сочетаний клавиш

Ищите документированные сочетания по умолчанию для VS Code, Chrome и Bash с GNU Readline в macOS, Windows и Linux.

Инструмент доступен на других языках