Генератор конфигурации webpack
Писать webpack.config.js по памяти значит помнить точную форму output, регулярное выражение test для каждого загрузчика и то, как подключаются плагины. Этот генератор превращает всё это в короткую форму: задайте входной файл, папку вывода и режим сборки, затем отметьте нужные части: TypeScript, Babel, загрузчик CSS, HtmlWebpackPlugin и сервер разработки. Он создаёт чистую, готовую к копированию конфигурацию webpack 5 с именами файлов [contenthash] и уже прописанным output.clean.
Как создать конфигурацию webpack
-
1
Задайте entry и вывод
Укажите входной файл (по умолчанию `./src/index.js`) и папку вывода (по умолчанию `dist`).
-
2
Выберите режим
Выберите `production` или `development`. Значение записывается прямо в поле `mode`.
-
3
Включите загрузчики и плагины
По необходимости включите TypeScript (`ts-loader`), Babel (`babel-loader`), загрузчик CSS (`style-loader` + `css-loader`), `HtmlWebpackPlugin` и сервер разработки.
-
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.
Инструмент доступен на других языках
- Generator konfiguracji webpack [PL]
- ตัวสร้างการตั้งค่า Webpack [TH]
- Generador de Configuración de Webpack [ES]
- Webpack設定ジェネレーター [JA]
- مولّد إعدادات Webpack [AR]
- Webpack 설정 생성기 [KO]
- Trình tạo cấu hình webpack [VI]
- Générateur de configuration Webpack [FR]
- Webpack-Konfigurationsgenerator [DE]
- Generator Konfigurasi Webpack [ID]
- Gerador de Configuração Webpack [PT]
- Webpack-konfigurationsgenerator [SV]
- Webpack-configuratiegenerator [NL]
- Webpack Config Generator [EN]
- Generatore di Configurazione Webpack [IT]
- Webpack Yapılandırma Oluşturucu [TR]
- Webpack 配置生成器 [ZH]