目录

一、Rollup概述

二、Rollup 快速上手

三、Rollup 配置文件

四、Rollup 使用插件

五、Rollup 加载 NPM 模块

六、Rollup 加载 CommonJS 模块

七、Rollup 代码拆分

八、Rollup 多入口打包

九、Rollup 选用原则


rollup 官网:简介 | rollup.js 中文文档 | rollup.js 中文网

一、Rollup概述

  • Rollup 与 Webpack 类似,仅仅是一款 ESM 打包器
  • Rollup 中并不支持类似 HMR 这种高级特性
  • 提供一个充分利用ESM 各项特性的高效打包器

二、Rollup 快速上手

  • yarn add rollup --dev
  • yarn rollup ./src/index.js --format iife
  • yarn rollup ./src/index.js --format iife --file dist/bundle.js

三、Rollup 配置文件

  • 在根目录新建 rollup.config.js
  • yarn rollup --config
  • yarn rollup --config rollup.config.js
export default {input:'./src/index.js',output: {file: 'dist/bundle.js',format:'iife'}
}

四、Rollup 使用插件

  • yan add rollup-plugin-json --dev
  • 在 index.js 导入 import { name, version } from '../package.json'
// index.js// 导入模块成员
import { log } from './logger'
import messages from './messages'
import { name, version } from '../package.json'// 使用模块成员
const msg = messages.hilog(msg)log(name)
log(version)
// rollup.config.jsimport json from 'rollup-plugin-json'export default {input: 'src/index.js',output: {file: 'dist/bundle.js',format: 'iife'},plugins: [json()]
}

五、Rollup 加载 NPM 模块

  • yarn add rollup-plugin-node-resolve --dev
// index.js// 导入模块成员
import _ from 'lodash-es'
import { log } from './logger'
import messages from './messages'
import { name, version } from '../package.json'// 使用模块成员
const msg = messages.hilog(msg)log(name)
log(version)
log(_.camelCase('hello world'))
// rollup.config.jsimport json from 'rollup-plugin-json'
import resolve from 'rollup-plugin-node-resolve'export default {input: 'src/index.js',output: {file: 'dist/bundle.js',format: 'iife'},plugins: [json(),resolve()]
}

六、Rollup 加载 CommonJS 模块

  • yarn add rollup-plugin-commonjs --dev
  • yarn rollup --config
// rollup.config.jsimport json from 'rollup-plugin-json'
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'export default {input: 'src/index.js',output: {file: 'dist/bundle.js',format: 'iife'},plugins: [json(),resolve(),commonjs()]
}

七、Rollup 代码拆分

  • yarn rollup --config --format amd
import json from 'rollup-plugin-json'
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'export default {input:'./src/index.js',output: {// file: 'dist/bundle.js',// format:'iife'dir:'dist',format:'amd'},plugins: {json(),resolve(),commonjs()}
}

八、Rollup 多入口打包

// roll.config.jsimport json from 'rollup-plugin-json'
import resolve from 'rollup-plugin-node-resolve'
import commonjs from 'rollup-plugin-commonjs'export default {//input:'./src/index.js',input:{foo:'src/index.js',bar:'src/album.js'},output: {// file: 'dist/bundle.js',// format:'iife'dir:'dist',format:'amd'},plugins: [json(),resolve(),commonjs()]
}
  • 在 dist 目录新建index.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Document</title>
</head>
<body><!-- AMD 标准格式的输出 bundle 不能直接引用 --><!-- <script src="foo.js"></script> --><!-- 需要 Require.js 这样的库 --><script src="https://unpkg.com/requirejs@2.3.6/require.js" data-main="foo.js"></script>
</body>
</html>
  • serve dist

九、Rollup 选用原则

优点

  • 输出结果更加扁平
  • 自动移除未引用代码
  • 打包结果依然完全刻度

缺点

  • 加载非 WSM 的第三方模块比较复杂
  • 模块最终都被打包到一个函数中,无法实现 HMR
  • 浏览器环境中,代码拆分功能依赖 AMD 库

总之, Webpack 大而全,Rollup 小而美 ,如果开发应用程序,用 Webpack,如果开发库/框架开发使用 Rollup.

Rollup【ESM打包工具】相关推荐

  1. rollup函数_Vue3同款打包工具Rollup常用配置

    Rollup的优势 在最新的Vue3版本中,也使用了rollup作为打包工具.相比于webpack,rollup要轻量许多,用于弥补gulp的无tree-shaking是很好的选择,最大的用途是打包生 ...

  2. rollup打包工具

    Rollup webpack的打包比较繁琐,打包体积比较大. rollup主要是用来打包js库的. vue/react等都在用rollup作为打包工具. 使用 安装依赖 yarn add @babel ...

  3. 前端打包工具rollup、webpack、vite的区别

    前端打包工具rollup.webpack.vite的区别 文章目录 前端打包工具rollup.webpack.vite的区别 一.结论 二.rollup 三.webpack 1. 核心概念 2. 重要 ...

  4. 前端打包工具Esbuild--模块化、ESM、esbuild-loader、

    模块化编程在前端领域已非常普遍,应用程序中将各种功能细分成独立的模块(单独文件)进行开发.module bundler 将所有文件串联起来变成了必须. JavaScript 社区中有很多程序的打包工具 ...

  5. JS打包工具rollup——完全入门指南

    因项目需要,最近一直在研究前端打包技术,参照以下文章及rollup官网,通过亲手操练,对rollup有了初步的了解.看到一篇不错的文章,转载记录.感谢作者的无私分享. 原文链接地址:https://s ...

  6. 前端打包工具-webpack和rollup的区别

    开门见山 2017年4月初,Facebook 将一个 巨大的 pull 请求 合并到了 React 主分支(master) 中,将其现有的构建流程替换为基于 Rollup ,这一举动 促使 一些人发很 ...

  7. Web Bundler CheatSheet, 选择合适的构建打包工具

    题注:Web Bundler CheatSheet 属于 Awesome-CheatSheet 系列,盘点数个常用的开发打包工具清单.欢迎加入阿里南京前端团队,欢迎关注阿里南京技术专刊了解更多讯息. ...

  8. JS模块化 + 打包工具webpack5

    「模块化」是思想 Summarize From [「前端工程化」之 Webpack 原理与实践(彻底搞懂吃透 Webpack)汪磊原版] 文章目录 ==模块化的演变过程== 文件划分方式(全靠约定) ...

  9. 前端打包工具 Esbuild

    JavaScript 社区中有很多程序的打包工具,如 Webpack.Rollup.Parcle 等,它们都是使用 JavaScript 开发,性能方面有很多不足. 而 Esbuild,采用 Go 语 ...

最新文章

  1. c语言以空格分割字符串_C语言: 利用sscanf() 函数分割字符串
  2. Linux学习笔记:touch新建文件、修改访问、改动时间
  3. Python 中re.split()方法
  4. boost::gregorian模块实现使用公历精确地推进一个月的测试程序
  5. exit()与_exit()函数的区别
  6. JS调用C#后台函数
  7. 使用dshow抓取摄像头数据时,回调函数时间为0的问题
  8. vue-cli,webpack安装
  9. qt截图怎样实现橡皮擦_利用QT实现截屏的四种方法
  10. centos7重启后/etc/resolv.conf 被还原解决办法
  11. AD19---彻底解决原理图转PCB时,出现failed to add class member及Unknown Pin的问题
  12. java分页之页面分页—@易小川
  13. [NLP]——BPE、WordPiece、Unigram and SentencePiece
  14. java业务场景-实现订单超时关闭等延时队列操作的几种方式
  15. Linux:详细的RPM和YUM/DNF管理工具,配置仓库等
  16. 今天不了技术,谈情怀,推荐一篇 寒窑赋
  17. Eclipse插件(RCP)自定义编辑器
  18. 养生之道——》每天8杯水
  19. joc杂志影响因子2019_有机化学高档次杂志投稿之我见——JACS,Angew,OL等
  20. 【算法】五大常用算法最全面总结

热门文章

  1. 北大igem生物计算机,喜讯|北京大学iGEM团队在国际大赛中取得金牌
  2. DophinScheduler server部分 核心代码详细解析——统领全局调度全场的服务器server部分究竟干了什么?
  3. python三大器之一——装饰器详解
  4. 支持html邮件,HTML邮件兼容问题与解决方案
  5. c9计算机专业考研哪个容易,二本考研考C9是什么难度?有可能吗?
  6. java开发工程师的晋升路径_Java开发工程师职业发展及晋升路线图
  7. shell脚本实现分日志级别输出
  8. android2019开源框架
  9. python3小项目——爬取智联招聘信息(二)
  10. ATE API:ON_FIRST_INVOCATION并测控制