Rollup 学习笔记
适合目标:掌握 Rollup 的核心思想、tree shaking、输出格式、库构建能力与面试表达。
学习定位:这一份偏“库构建、干净产物、底层打包器认知”。
学习原则:先分清 Rollup 和应用构建工具的边界,再理解它为什么仍然是库构建强者。
目录
- Rollup 是什么
- 为什么 Rollup 仍然值得学
- 核心能力
- 输出格式
- tree shaking
- 适用场景
- 配置与插件
- 常见问题
- 高频面试题
- 一页总结
1. Rollup 是什么
Rollup 是一个 JavaScript 模块打包器。
它的优势标签非常鲜明:
- tree shaking 强
- 输出产物干净
- 多格式输出能力强
- 插件生态成熟
2. 为什么 Rollup 仍然值得学
虽然很多前端应用开发直接用 Vite,但 Rollup 仍然非常重要:
- 库构建高频
- 很多工具链有 Rollup 思想
- tree shaking 讲解时常会提到它
- Vite / Rolldown 生态与它强相关
3. 核心能力
3.1 干净产物
Rollup 非常擅长生成适合发布给其他项目消费的产物。
3.2 多格式输出
常见格式:
esmcjsumdiife
3.3 tree shaking
Rollup 是树摇优化的重要代表工具之一。
4. 输出格式
4.1 ESM
现代前端和库构建最常见格式。
4.2 CJS
兼容 Node.js 老生态时常用。
4.3 UMD / IIFE
适合浏览器 script 直接引用等老场景。
4.4 为什么库构建特别看重这些格式
因为发布给别人用时,要兼容不同环境和工具链。
5. tree shaking
5.1 本质
在静态分析基础上移除未使用代码。
5.2 为什么 Rollup 在这个点上口碑好
因为它对 ESM 的静态结构利用得非常好,产物通常更干净。
5.3 tree shaking 生效前提
- 尽量使用 ESM
- 减少副作用代码
- 正确标记 side effects
6. 适用场景
6.1 最适合
- 组件库
- SDK
- 工具函数库
- 发布 npm 包
6.2 不一定最适合
- 超复杂大型应用的完整 dev/build 一体化体验
- 团队想开箱即用搭完整前端应用
7. 配置与插件
7.1 基本配置关注点
inputoutputexternalplugins
7.2 external 为什么重要
因为你不一定想把所有依赖都打进产物。
比如发布组件库时,常常要把 React、Vue 等设为外部依赖。
7.3 插件体系
Rollup 插件体系非常重要,也影响了后来的生态设计。
8. 常见问题
8.1 为什么产物里仍然有没用代码
看:
- 是否真的用 ESM
- 是否存在副作用
- 插件转换是否破坏静态分析
8.2 为什么库构建常选 Rollup
因为它擅长输出干净、可控、多格式的库产物。
9. 高频面试题
9.1 Rollup 和 Webpack 区别
常见答法:
- Webpack 更全能、更偏应用构建
- Rollup 更偏库构建、产物更干净
9.2 Rollup 为什么 tree shaking 好
因为它充分利用 ESM 的静态结构做更有效的死代码删除。
9.3 为什么现在还要学 Rollup
因为库构建、tree shaking、输出格式与现代 bundler 生态仍然强相关。
10. 一页总结
10.1 Rollup 的定位
库构建强者,tree shaking 代表工具。
10.2 记忆口诀
写应用先想 Vite,写库先想 Rollup。