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/.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),因此你可以根据项目的转译方式开启其中一个或两个。

相关工具

此工具还提供其他语言版本