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

Rollup 生产构建原理

Vite 生产构建底层使用 Rollup,生成高度优化的产物。

Rollup 构建流程

JavaScript
1. 入口分析 → 扫描依赖 → 构建模块图
2. 依赖分析 → Tree Shaking → 标记导出
3. Chunk 分割 → 代码合并 → 生成产物
4. 资源处理 → 哈希命名 → 输出文件

模块图构建

JavaScript
// Rollup 分析入口依赖
import App from './App.vue'
import router from './router'
import { createStore } from 'pinia'

// 递归分析每个 import
// 构建完整依赖图

Tree Shaking 原理

text
// 源码
export function used() { }
export function unused() { }

// 代码中使用
import { used } from './utils'

// 构建后,unused 被移除
export function used() { }

注意:Tree Shaking 移除未使用的导出,减小产物体积。

Chunk 分割算法

Rollup 根据:

  • 模块依赖关系
  • 动态导入边界
  • manualChunks 配置
  • 入口共享分析

自动分割 chunk:

text
入口共享 → vendor chunk
动态导入 → 异步 chunk
配置分包 → 自定义 chunk

构建产物结构

text
dist/
├── index.html           # 入口
├── assets/
│   ├── index-[hash].js  # 入口 chunk
│   ├── vendor-[hash].js # 依赖 chunk
│   ├── lazy-[hash].js   # 懒加载 chunk
│   └── index-[hash].css # CSS 文件

Chunk 内容

Chunk内容
index业务代码入口
vendor第三方依赖
lazy动态导入模块

Rollup vs Webpack

特点RollupWebpack
Tree Shaking原生支持需配置
ES Module输出 ESM输出 Bundle
产物体积更小较大
代码分割静态分割动态分割

要点总结

  • Rollup 构建模块图分析依赖
  • Tree Shaking 移除未使用代码
  • Chunk 分割基于依赖和配置
  • 产物体积更小,ESM 输出

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

← 上一篇 HMR 边界计算算法
下一篇 → esbuild 预构建优化
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

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

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