rollup和wepack的区别
- 特性
- rollup所有资源放在同一个地方,一次性加载,利用tree-shaking特性来剔除未使用的代码,减少冗余
- webpack 拆分代码、按需加载 webpack2已经逐渐支持tree-shake
- rollup
- 打包你的js文件时候如果发现你的无用变量,会将其删掉
- 可以将你的js中的代码,编译成你想要的格式
- webpack
- 代码拆分
- 静态资源导入(如js、css、图片、字体等)
- 应用场景
项目(特别是类库)只有js,而没有其他的静态资源文件,使用webpack就有点大材小用了,因为webpack bundle文件的体积略大,运行略慢,可读性略低这时候 rollup (opens new window)就是一种不错的解决方案
Rollup的好处
- Tree shaking:自动移除未使用的代码,输出更小的文件
- Scope Hoisting:所有模块构建在一个函数内,执行效率更高
- Config文件支持ESM模块格式书写
- 可以一次输出多重格式:IIFE,AMD,CJS,UMD,ESM
- Development与production版本:.js.min.js
- 文档精简
基础插件
- rollup-plugin-alias:提供module名称和resolve功能
- rollup-plugin-babel: 提供 Babel 能力, 需要安装和配置 Babel (这部分知识不在本文涉及)
- rollup-plugin-eslint: 提供 ESLint 能力, 需要安装和配置 ESLint (这部分知识不在本文涉及)
- rollup-plugin-node-resolve: 解析 node_modules 中的模块
- rollup-plugin-commonjs: 转换 CJS -> ESM, 通常配合上面一个插件使用
- rollup-plugin-replace: 类比 Webpack 的 DefinePlugin , 可在源码中通过 process.env.NODE_ENV 用于构建区分 Development 与 Production 环境.
- rollup-plugin-filesize: 显示 bundle 文件大小
- rollup-plugin-uglify: 压缩 bundle 文件
- rollup-plugin-serve: 类比 webpack-dev-server, 提供静态服务器能力
rollup (opens new window)
webpack (opens new window)
rollup打包产物解析及原理(对比webpack) (opens new window)