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/.tsx 的 ts-loader 规则,并把这些扩展名加入 resolve。 |
| Babel | 针对 .js/.jsx 的 babel-loader 规则。 |
| CSS 加载器 | 针对 .css、把 style-loader 和 css-loader 串联起来的规则。 |
| HtmlWebpackPlugin | require 行以及 new HtmlWebpackPlugin({ template: './src/index.html' })。 |
| 开发服务器 | 一个 devServer 区块,在端口 3000 上以热重载方式提供输出文件夹。 |
输出中固定的选择
为保持初始配置简洁,有些值是替你设定好的,而不是作为字段暴露出来:
- 带哈希的文件名。
output.filename始终是bundle.[contenthash].js,每当 bundle 变化时都会使浏览器缓存失效。 - 干净的输出。
output.clean: true会在每次构建时清空输出文件夹,这是 webpack 5 中clean-webpack-plugin的替代方案。 - CSS 打包进 bundle,而非抽取出来。
style-loader通过 JavaScript 注入样式。若要在生产环境中输出单独的.css文件,请自行添加MiniCssExtractPlugin。 - 开发服务器基础项。 开启后,
devServer会设置static、port: 3000和hot: true。如果应用需要,请手动添加historyApiFallback或proxy等选项。
如何进一步扩展
生成的文件是一个起点,而非完整的生产配置。你通常会自行添加的后续步骤有:用于抽取 CSS 的 MiniCssExtractPlugin、用于 .scss 的 sass-loader、用于图片和字体的 webpack 5 asset 模块、用于 source map 的 devtool 值,以及用于代码分割的 splitChunks 区块。
常见问题
为 webpack 5。输出使用 output.clean 和 [contenthash] 文件名,这是 webpack 5 的现代惯例,因此不需要额外的清理插件。
不会,它始终生成 JavaScript 的 webpack.config.js。开启 TypeScript 选项会添加一条 ts-loader 规则,让 webpack 编译你的 .ts/.tsx 源码;它不会改变配置文件本身的格式。
生成的 devServer 区块使用端口 3000 并启用热重载。如果需要其他端口,请在复制后的文件中修改 port 的值。
可以。每个选项都会添加各自的规则(.tsx? 用 ts-loader,.jsx? 用 babel-loader),因此你可以根据项目的转译方式开启其中一个或两个。
相关工具
ASCII 表参考
完整 ASCII 表,覆盖 0 到 127;列出每个代码的十进制、十六进制、八进制、二进制值和 HTML 数字字符引用写法,包括 NUL、LF、DEL。
HTML 字符参考
可搜索的 HTML 实体列表,含命名代码与数值代码,并支持一键复制特殊字符和符号。
键盘快捷键参考
搜索 macOS、Windows 和 Linux 上 VS Code、Chrome 以及使用 GNU Readline 的 Bash 的文档默认快捷键。
JSON 转 Dart 工具
将 JSON 示例转换为空安全的 Dart 模型类,支持嵌套类型、fromJson、可选 toJson,并在浏览器中私密处理。
IBAN 验证工具
在本地检查 IBAN 的注册国家长度、国内结构和 MOD 97-10 校验位。不上传数据,也不表示账户真实存在。
Markdown 图片生成器
生成带替代文本、title 属性和可选链接的 Markdown 图片语法。支持内联格式和引用格式输出。
此工具还提供其他语言版本
- Webpack設定ジェネレーター [JA]
- Generator konfiguracji webpack [PL]
- ตัวสร้างการตั้งค่า Webpack [TH]
- Trình tạo cấu hình webpack [VI]
- Webpack-configuratiegenerator [NL]
- مولّد إعدادات Webpack [AR]
- Webpack 설정 생성기 [KO]
- Générateur de configuration Webpack [FR]
- Webpack-Konfigurationsgenerator [DE]
- Generator Konfigurasi Webpack [ID]
- Gerador de Configuração Webpack [PT]
- Generador de Configuración de Webpack [ES]
- Webpack-konfigurationsgenerator [SV]
- Webpack Config Generator [EN]
- Generatore di Configurazione Webpack [IT]
- Генератор конфигурации webpack [RU]
- Webpack Yapılandırma Oluşturucu [TR]