默认tree-shaking
ESM 打包器
插件是Rollup唯一拓展途径
导入json
npm i rollup-plugin-json
import json from '@rollup/plugin-json'
const plugins = [ json() ].filter(Boolean)
config.plugins = plugins
rollup 只能处理es-module
rollup加载commonJS 模块
npm i @rollup/plugin-commonjs
const plugins = [ commonjs() ].filter(Boolean)
rollup多入口打包
input 属性设置为数组
多入口会提取公共模块和代码拆分,输出格式为amd,不能是iife
rollup和webpack的选用原则
优点
- 输出结果梗扁平
- 自动移除未引用的代码
- 阅读性
缺点
- 加载非ESM的的第三方模块比较复杂
- 模块最终会被打包到一个函数中,无法实现HMR
- 浏览器环境中,代码拆分功能依赖AMD库