1、Rollup概述
仅仅是一款ESM打包器,是一款充分利用ESM各项特性的高效打包器,与webpack非常类似,也能将项目中散落的细小模块打包成整块的代码,但是Rollup小巧很多,没有wwebpack中的模块热替换功能等一些高级特性。
2、Rollup上手
yarn add rollup --dev
安装后就会在bin目录下给我们提供一个cli程序,就可以通过cli给rollup打包
yarn rollup ./src/index.js --format --iife dist/bundle.js
运行打包命令,指定打包入口,输出格式,输出路径
3、Rollup配置文件
在项目根目录下创建一个rollup.config.js文件,这个文件同样运行子node当中,不过rollup会额外处理这个配置文件,这里可以直接使用esm,导出一个配置对象。
yarn rollup --config//默认不会读取配置文件,必须要加--config这个参数,还可以通过这个参数来指定不同配置文件的名称
4、Rollup使用插件
rollup支持使用插件的方式扩展,插件是rollup唯一扩展的途径
yarn add rollup-plugin-json --dev
5、Rollup加载NPM模块
rollup默认只能按照文件路径的方式去加载本地的模块,对于第三方模块不向webpack一样直接通过模块的名称导入,官方给出一个插件,rollup-plugin-node-resolve,使用后就能像webpack一样使用模块名称导入模块了。rollup默认只能处理ESM模块。
yarn add rollup-plugin-node-resolve --dev
6、Rollup加载CommonJS
官方给出插件,rollup-plugin-commonjs,使用后commonjs也就可以被打包了
7、Rollup代码拆分
可以使用符合ESM的动态导入的方式,去实现模块的按需加载,rollup内部会自动处理代码的拆分。使用代码拆分这种方式去打包,要求我们的format不能是iife自执行函数这一种,因为自执行函数会把所有模块都放在一个函数当中,不会像webpack会有一些引导代码,所以没办法实现代码拆分,要使用代码拆分,必须要使用amd这种方式。
8、Rollup多入口打包
多入口打包内部会自动提取公共模块,内部会使用代码拆分,就不能使用iife这种输出格式,要改成amd,对于adm这种输出格式的js文件,不能直接引用到页面上,必须通过实现amd标准的库去加载。
9、Rollup选用原则
开发应用程序,需要大量引用第三方模块的需求,同时需要使用HMR来提升开发体验,应用大了还需要分包,rollup在这方面都有欠缺。如果在开发js框架或者是类库,这些优点就特别有必要,因为在开发类库时很少依赖第三方模块,所以很多知名框架都使用rollup打包,如react和vue。webpack大而全,rollup小而美,开发应用程序用webpack,框架类库用rollup。
优点
缺点
9、Parcel(零配置的前端应用打包器)
Parcel官网建议用html文件作为打包入口,因为html是应用运行在浏览器端的入口。2017年诞生,因为webpack当时使用繁琐,相比于webpack,parcel构建速度更快,使用了多进程同时工作,webpack也可以借助插件实现。 webpack生态更好,近几年越来越好用