Rollup基础篇
来源:互联网 发布:如何组织js代码 编辑:程序博客网 时间:2024/06/13 03:41
基础知识
- 特性
- 前端模块打包工具,可以让bundle文件最小化,避免引入冗余模块代码,有效减少文件请求大小。
- 编译
- 在 Rollup 编译模块的过程中,通过 Tree-shacking 的方式来剔除各模块中最终未被引用到的方法,通过仅保留被调用到的代码块来缩减 bundle 的大小。
- Tree-shaking 的作用
- 会抽取引用到的模块内容,将它们置于同一个作用域下,进而直接用变量名就可以访问各个模块的接口;而不像 webpack 这样每个模块外还要包一层函数定义,再通过合并进去的 define/require 相互调用。当然这种方法需要 ES2015 的解构赋值语法来配合,多亏了它,Rollup 才能有效地对模块内容进行可靠的静态分析。
- 使用
- npm i rollup
- rollup src/main.ts -o rel/bundle.js -f cjs
- rollup 入口文件 -o 输出文件 -f cjs
- cjs : commonJs
- amd : AMD
- es6 : ES6(ES2015)
- Global : iife
- UMD : umd
配置文件
- 根目录创建 rollup.config.js
- 配置文件内容:
“`
import resolve from ‘rollup-plugin-node-resolve’
import commonjs from ‘rollup-plugin-commonjs’
import uglify from ‘rollup-plugin-uglify’
import angularOptimizer from ‘rollup-plugin-angular-optimizer’
import babel from ‘rollup-plugin-babel’export default {
entry: ‘src/main.js’, //入口
format: ‘cjs’, //规范
dest: ‘rel/bundle.js’, // 输出文件
plugins:[babel(), resolve(), angularOptimizer(), commonjs(), uglify()], //使用的插件
};
“`- 执行 rollup -c
- 如果你的配置文件另有其名(例如“rollup.config.dev.js”),在后面加上配置文件名即可:rollup -c rollup.config.dev.js
配置中的插件【plugins】
babel: rollup 需要独立写个文件,可以写在src下
- 确保安装了 rollup-plugin-babel 和 babel 预设 babel-preset-es2015-rollup
- npm i rollup-plugin-babel babel-preset-es2015-rollup
- .babelrc :
{ "presets": ["es2015-rollup"]}
- 确保安装了 rollup-plugin-babel 和 babel 预设 babel-preset-es2015-rollup
- resolve
- rollup-plugin-node-resolve
- commonjs
- rollup-plugin-commonjs
- uglify 压缩混淆文件
- rollup-plugin-uglify
- optimizer
- rollup-plugin-angular-optimizer
- 如果想要在模块中来被调用执行,可将配置文件修改为:
var rollup = require( 'rollup' );var babel = require('rollup-plugin-babel');rollup.rollup({ entry: 'src/main.js', plugins: [ babel() ]}).then( function ( bundle ) { bundle.write({ format: 'umd', moduleName: 'main', //umd或iife模式下,若入口文件含 export,必须加上该属性 dest: 'rel/bundle.js', sourceMap:true //利于调试 });});
之后用node直接执行: node rollup.config.dev.js
- 注意 “rollup.rollup()”返回一个带着 bundle 作为 resolve 回调参数的 Promise 对象,我们常规直接使用语法糖 bundle.write 来打包输出文件
- sourceMap:为了方便调试编译后的文件
- 这样编译后,rollup 会自动生成一个 rel/bundle.js.map 关联到 rel/bundle.js 中。也可以将其直接内联在 bundle 里而不是独立生成一个 map 文件: sourceMap: ‘inline’
参考博客
官方文档
- Rollup基础篇
- RollUP
- oracle的rollup,cube等相关基础
- SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
- SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
- SQL 基础--> ROLLUP与CUBE运算符实现数据汇总
- groupby rollup
- Rollup & Cube
- SqlServer-ROLLUP
- ROLLUP&CUBE
- ROLLUP函数
- ROLLUP & CUBE
- SQL 基础10—— ROLLUP与CUBE运算符实现数据汇总
- 【ROLLUP】Oracle分组函数之ROLLUP魅力
- 【ROLLUP】Oracle分组函数之ROLLUP魅力
- 【ROLLUP】Oracle分组函数之ROLLUP魅力
- 【ROLLUP】Oracle分组函数之ROLLUP魅力
- 【ROLLUP】Oracle分组函数之ROLLUP魅力
- java 的多态 及向上向下转型
- 洛谷P2161 [SHOI2009]Booking 会场预约_Splay
- 什么是闭包?闭包的优缺点?
- 061day(虚函数和多态)
- 学习Linux基础命令,宏与函数的区别及宏的应用
- Rollup基础篇
- 机房收费系统退卡之触发器
- Gradle的依赖关系缓存可能已损坏(有时会在网络连接超时之后发生)
- 【LeetCode刷题记录】
- 逃离迷宫 HDU
- 关于eclipse连接SQLserver2012失败问题
- c++中位函数
- 进程通信程序管理---共享内存和信号量(Linux)
- python学习笔记 暂停一段时间