全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-23 7 分钟 ✍️ juanwangdev

Bundle 分析与优化

分析构建产物体积分布,找出优化点减小产物大小。

安装分析插件

Bash
npm add -D rollup-plugin-visualizer

配置分析插件

JavaScript
import { visualizer } from 'rollup-plugin-visualizer'

export default defineConfig({
  plugins: [
    visualizer({
      filename: 'stats.html',  # 输出文件
      open: true,              # 自动打开
      template: 'treemap',     # 可视化类型
      gzipSize: true           # 显示 gzip 体积
    })
  ]
})

可视化类型

类型说明
treemap树形图,层级展示
sunburst日出图,比例展示
network网络图,依赖关系

注意:treemap 最直观展示模块体积分布。

分析产物结构

打开 stats.html 可看到:

  • 每个 chunk 的体积
  • 模块占 chunk 的比例
  • gzip 后的体积
  • 模块依赖关系

优化策略

根据分析结果优化:

问题优化方案
大依赖单独打包manualChunks
重复导入提升到公共模块
未使用导出Tree Shaking
过大模块按需导入

manualChunks 分包

JavaScript
export default defineConfig({
  build: {
    rollupOptions: {
      output: {
        manualChunks(id) {
          // 大依赖单独分包
          if (id.includes('lodash')) {
            return 'lodash'
          }
        }
      }
    }
  }
})

按需导入优化

JavaScript
// 全量导入(不推荐)
import _ from 'lodash'

// 按需导入(推荐)
import debounce from 'lodash/debounce'
import throttle from 'lodash/throttle'

Tree Shaking 检查

JavaScript
// 检查是否有副作用标记
// package.json
{
  "sideEffects": false
}

gzip 体积对比

原始体积gzip 体积
100KB~30KB
500KB~150KB
1MB~300KB

gzip 压缩后体积约为原始的 30%。

要点总结

  • visualizer 分析产物体积分布
  • treemap 直观展示模块占比
  • 针对大依赖配置分包策略
  • 按需导入减小产物体积

📝 发现内容有误?点击此处直接编辑

← 上一篇 模块图与依赖分析
下一篇 → Tree Shaking 深度优化
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库