Webpack配置

12/31/2023 前端前端构建Webpack

目录


# Webpack配置

  • app.js: 业务代码
  • runtime.js:webpack的引导代码
  • vendor.js: npm引入的js包代码

# optimization 配置项

optimization 配置选项用于优化打包结果。用来自定义一些优化打包策略

  • minimizer:配置使用的压缩工具。常用的压缩工具有 UglifyJS、TerserJS 和 CSSMinimizerPlugin 等。
optimization: {
  minimizer: [
    new TerserJSPlugin(),
    new OptimizeCSSAssetsPlugin()
  ]
}
1
2
3
4
5
6
  • splitChunks: 配置如何将打包后的代码拆分为多个文件,以便实现按需加载。
optimization: {
  splitChunks: {
    chunks: 'all',
    minSize: 30000,
    //指定一个 chunk 的最大大小,超过这个大小将自动进行分割。
    maxSize: 0,
    //指定一个模块被使用的最小次数才会被抽取出来形成单独的 chunk。
    minChunks: 1,
    maxAsyncRequests: 5,
    maxInitialRequests: 3,
    automaticNameDelimiter: '~',
    name: true,
    //指定如何根据不同的模块抽取出不同的 chunk,例如将第三方库抽取成单独的 chunk。
    cacheGroups: {
      vendors: {
        test: /[\\/]node_modules[\\/]/,
        priority: -10
      },
      default: {
        minChunks: 2,
        priority: -20,
        reuseExistingChunk: true
      }
    }
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
  • runtimeChunk:配置为每个入口添加一个额外的 chunk,用于存放公共代码和运行时代码。该选项可以有效减少打包后的文件大小,提高网站性能。
optimization: {
  runtimeChunk: 'single'
}
1
2
3
  • usedExports:开启 Tree Shaking 功能,用于删除未被使用的代码。
optimization: {
  usedExports: true
}
1
2
3
  • moduleIds:指定如何生成模块 ID,默认为自增的数字,可以使用 named 选项将 ID 转换为可读性更好的名称。
module.exports = {
  optimization: {
    moduleIds: 'named', // 将模块 ID 转换为可读性更好的名称
  },
};
1
2
3
4
5
上次更新时间: 9/25/2024, 9:17:45 AM