当前位置: 首页 > news >正文

rollup使用讲解

rollup 总结

什么是 rollup?

rollup 是一个 JavaScript 模块打包器,在功能上要完成的事和 webpack 性质一样,就是将小块代码编译成大块复杂的代码,例如 library 或应用程序。在平时开发应用程序时,我们基本上选择用 webpack,相比之下,rollup.js 更多是用于 library 打包,我们熟悉的 vue、react、vuex、vue-router 等都是用 rollup 进行打包的。

rollup 安装

首先是安装:

npm i rollup -D

打包一个 js 文件

新建一个项目,并安装 rollup,创建两个文件:hello.js 和 index.js

"dev": "rollup -i src/index.js -o dist/bundle.js -f es"

在这段指令中:

  • -i指定要打包的文件,-i--input的缩写。
  • src/index.js-i的参数,即打包入口文件。
  • -o指定输出的文件,是--output.file--file的缩写。(如果没有这个参数,则直接输出到控制台)
  • dist/bundle.js-o的参数,即输出文件。
  • -f指定打包文件的格式,-f--format的缩写。
  • es-f的参数,表示打包文件使用 ES6 模块规范。

6 种格式分别适合在什么场景使用?

rollup 支持的打包文件的格式有 amd, cjs, es\esm, iife, umdsystem。其中,amdAMD 标准,cjsCommonJS 标准,esm\esES 模块标准,iife 为立即调用函数, umd 同时支持 amdcjsiife

  • IIFE: 适合部分场景作为 SDK 进行使用,尤其是需要把自己挂到 window 上的场景。
  • CommonJS: 仅 node.js 使用的库。
  • AMD: 只需要在浏览器端使用的场景。
  • UMD: 既可能在浏览器端也可能在 node.js 里使用的场景。
  • SystemJs: 和 UMD 类似。目前较出名的 Angular 用的就是它。
  • ESM: 1. 还会被引用、二次编译的场景(如组件库等);2.浏览器调试场景如 vite.js的开发时。3.对浏览器兼容性非常宽松的场景。

rollup 配置文件

在项目开发中,我们通常会使用配置文件,这不仅可以简化命令行操作,同时还能启用 rollup 的高级特性。

在项目根目录下创建rollup.config.js

export default {input: './src/index.js',output: [{file: './dist/index-umd.js',format: 'umd',name: 'myLib',//当入口文件有export时,'umd'和'iife'格式必须指定name//这样,在通过<script>标签引入时,才能通过name访问到export的内容。},{file: './dist/index-es.js',format: 'es',},{file: './dist/index-cjs.js',format: 'cjs',},],
}

使用 Rollup 的配置文件,可以使用rollup --config或者rollup -c指令。

//修改package.json的script字段
"dev": "rollup -c"                 // 默认使用rollup.config.js
"dev": "rollup -c my.config.js"    //使用自定义的配置文件,my.config.js

rollup 插件

上面我们知道了 rollup 的基础用法,在实际应用中,会有很多更复杂的需求,比如,怎样支持 es6 语法,怎样打包.vue 文件,怎样压缩我们 js 的代码等等。在 rollup 中,我们借助插件来完成。

在 webpack 中,使用 loader 对源文件进行预处理,plugin 完成构建打包的特定功能需求。rollup 的 plugin 兼具 webpack 中 loader 和 plugin 的功能。

rollup-plugin-babel

rollup-plugin-babel用于转换 es6 语法。

src/hello.js中的内容改写成:

export const hello = () => {console.log('hello world')
}

在未使用 babel 插件的情况下,打包之后箭头函数仍然未转换

使用 babel 插件:

npm i rollup-plugin-babel @babel/core @babel/preset-env -D
//rollup.config.js
import babel from 'rollup-plugin-babel'
export default {plugins: [babel({exclude: 'node_modules/**',}),],
}

在项目根目录创建.babelrc文件。

{

相关文章:

  • My SQL 索引
  • 山东大学软件学院项目实训-基于大模型的模拟面试系统-Token过期重定向问题
  • uniapp微信小程序实现sse
  • 基于Matlab求解矩阵电容等效容值
  • 嵌入式人工智能应用-第三章 opencv操作 5 二值化、图像缩放
  • 2.2 BackgroundWorker的使用介绍
  • CentOS 10 /root 目录重新挂载到新分区槽
  • Qt中修改了UI设计文件后编译不生效问题的解决办法
  • 拼多多面经,暑期实习Java一面
  • 20. git diff
  • 博客系统-RabbitMQ
  • 【自然语言处理与大模型】Linux环境下Ollama下载太慢了该怎么处理?
  • 计算机网络中的网络层:架构、功能与重要性
  • IPv4地址分类与常用网络地址详解
  • 易语言验证京东滑块轨迹算法
  • Beszel​​ 轻量级服务器监控平台的详细安装步骤
  • 软考复习——综合布线
  • 用键盘实现控制小球上下移动——java的事件控制
  • C语言自增自减题目
  • 【英语语法】词法---副词
  • 大尺度色情语聊、撮合卖淫嫖娼!一些交友软件暗藏“桃色陷阱”
  • 吕治国执掌全国唯一的热带海洋大学,曾从教育部“空降”海南
  • 两岸基层民生发展交流会在浙江开幕
  • 谷雨播种正当时,上海黄道婆纪念公园种下“都市棉田”
  • 由“环滁皆山”到“环滁皆景”,滁州如何勾勒“文旅复兴”
  • 恒安集团创始人许连捷逝世:白手起家缔造百亿纸品巨头,个人曾捐赠超10亿