rollup打包工具

Posted coderlin_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rollup打包工具相关的知识,希望对你有一定的参考价值。

Rollup

  • webpack的打包比较繁琐,打包体积比较大。
  • rollup主要是用来打包js库的。
  • vue/react等都在用rollup作为打包工具。

使用

安装依赖

yarn add @babel/core @babel/preset-env @rollup/plugin-commonjs @rollup/plugin-node-resolve @rollup/plugin-typescript loadsh rollup rollup-plugin-babel postcss rollup-plugin-postcss -D

yarn add rollup-plugin-terser tslib typescript rollup-plugin-serve rollup-plugin-livereload -D


配置相对简单,打包后的代码也是很清晰。
比wbepack打包后的代码简单太多。

plugin的使用

babel和typescript的使用


rollup的钩子就是要一个对象,它可以包含一些特定的方法。

这些特定的方法会在rollup的执行过程中被执行,如上图。

官网上简单的插件例子
可以简单理解插件就是一个对象,有很多钩子属性,在rollup的特定阶段会调用插件的这些钩子。

Tree shaking

  • rollup只处理函数和顶层的import/export变量
    就是当导入的变量没有使用的时候,不会被打爆。

第三方模块

  • rollup编译源码中的模块只支持esmodule。要支持commonjs需要插件。比如lodash内部是commonjs,不可以通过import引入,需要插件支持。
  • rollup也不支持加载node_module里面的模块,都需要插件支持。




    这样才能正常打包。

配合cdn引入

支持css

import postcss from ‘rollup-plugin-postcss’
在rollup中,基本都是插件。

很像webpack的css-loader,都是生成style标签插入head中。

本地服务器

import serve from ‘rollup-plugin-serve’,也是一个插件。

可以理解成打包后的代码在dist目录下,然后通过Http-server启动。

webpack vs rollup

  • 都可以打包入口文件
  • 都可以加载各种不同类型的文件
  • webpack和rollup加载好模块之后,都会进行模块解析,转成语法树,分析Import等依赖,再递归处理依赖的模块。
  • 都有输入和输出。
  • 都有插件机制,可以通过插件修改打包的过程。webpack的插件是一个有apply方法的类。rollup的插件是对象。

不同:

  • webpack加载别的类型的文件用的是loader,rollup用的是插件里面的transform钩子。
  • webpack打包出来的是commonjs,体积大,模块是分开的。
  • rollup打包出来的可以是很多种类型的,比如esmodule,体积小,模块代码会合并在一起。
rollup最大的优点:

简单,生成的文件很小,支持esmodule,强大的tree shaking能力。

以上是关于rollup打包工具的主要内容,如果未能解决你的问题,请参考以下文章

Rollup处理并打包JS文件项目实例

冗余代码都走开——前端模块打包利器 Rollup.js 入门

如何使用Rollup打包样式文件并添加LiveReload

基于rollup搭建JavaScript类库开发环境

rollup打包项目

rollup打包项目