前端-Rollup

Rollup 是一个用于 JavaScript 的模块打包工具,它将小的代码片段编译成更大、更复杂的代码,例如库或应用程序。它使用 JavaScript 的 ES6 版本中包含的新标准化代码模块格式,而不是以前的 CommonJS 和 AMD 等特殊解决方案。ES 模块允许你自由无缝地组合你最喜欢的库中最有用的个别函数。这在未来将在所有场景原生支持,但 Rollup 让你今天就可以开始这样做。

除屑优化(Tree-Shaking)

除了可以使用 ES 模块之外,Rollup 还可以静态分析你导入的代码,并将排除任何实际上没有使用的内容。这使你可以在现有的工具和模块的基础上构建,而不需要添加额外的依赖项或使项目的大小变得臃肿。

例如,使用 CommonJS 必须导入整个工具或库

复制代码
// 使用 CommonJS 导入整个 utils 对象
const utils = require('./utils');
const query = 'Rollup';
// 使用 utils 对象的 ajax 方法。
utils.ajax(`https://api.example.com?search=${query}`).then(handleResponse);

使用 ES 模块,我们不需要导入整个 utils 对象,而只需导入我们需要的一个 ajax 函数:

复制代码
// 使用 ES6 的 import 语句导入 ajax 函数。
import { ajax } from './utils';
const query = 'Rollup';
// 调用 ajax 函数
ajax(`https://api.example.com?search=${query}`).then(handleResponse);

一.安装

//全局安装

npm install rollup --global

//安装到本地

npm install rollup --save-dev

二.基本使用

1.基础要点:

配置需要一个入口文件并且设置代码输出格式

格式选项:

2.快速上手

创建入口文件:

打包:

三.配置文件

随着我们添加更多选项,输入命令会变得有点麻烦。

为了避免重复输入,我们可以创建一个包含所有必要选项的配置文件。配置文件是用 JavaScript 编写的,比原始的 CLI 更加灵活。

在项目根目录中创建一个名为 rollup.config.mjs 的文件

export default {

input: 'src/index.js',

output: {

file: 'bundle.js',

format: 'iife'

}

};

使用配置文件

rm bundle.js # so we can check the command works!

rollup -c //表明我们需要使用配置文件

可以使用等效的命令行选项覆盖配置文件中的任何选项:

rollup -c -o bundle-2.js

如果你想,你也可以选择指定不同于默认的 rollup.config.mjs 的配置文件:

rollup --config rollup.config.dev.mjs

四.使用插件

到目前为止,我们已经用入口文件和通过相对路径导入的模块打了一个简单的包。随着你需要打包更复杂的代码,通常需要更灵活的配置,例如导入使用 NPM 安装的模块、使用 Babel 编译代码、处理 JSON 文件等等。

插件是rollup的唯一扩展方式

插件列表:Rollup Awesome List

1.@rollup/plugin-json

@rollup/plugin-json:允许 Rollup 从 JSON 文件中导入数据。

npm install --save-dev @rollup/plugin-json

(我们使用 --save-dev 而不是 --save,因为我们的代码在运行时实际上不依赖于插件,只有在打包时才需要。)

2.@rollup/plugin-node-resolve

@rollup/plugin-node-resolve:抹平rollup根据本地路径加载模块,不像webpack根据模块名称导入的差异。(一个 Rollup 插件,它使用 Node 解析算法来定位模块,用于在node_modules

npm install @rollup/plugin-node-resolve --save-dev

例如引入lodash-es

3.@rollup/plugin-commonjs

@rollup/plugin-commonjs:由于rollup设计只处理ES模块,对于CommonJS 模块默认是不支持的,我们需要利用插件处理。(一个 Rollup 插件,用于将 CommonJS 模块转换为 ES6,以便它们可以包含在 Rollup bundle 中。)

npm install @rollup/plugin-commonjs --save-dev

五.代码拆分

Rollup 将使用动态导入创建一个仅在需要时加载的单独块。为了让 Rollup 知道在哪里放置第二个块,我们不使用 --file 选项,而是使用 --dir 选项设置一个输出文件夹:

修改配置文件:

总结

rollup优点:

缺点:

应用程序:webpack 库/框架:rollup

相关推荐
且白9 分钟前
vsCode使用本地低版本node启动配置文件
前端·vue.js·vscode·编辑器
程序研9 分钟前
一、ES6-let声明变量【解刨分析最详细】
前端·javascript·es6
siwangqishiq234 分钟前
Vulkan Tutorial 教程翻译(四) 绘制三角形 2.2 呈现
前端
李三岁_foucsli36 分钟前
js中消息队列和事件循环到底是怎么个事,宏任务和微任务还存在吗?
前端·chrome
尽欢i36 分钟前
HTML5 拖放 API
前端·html
PasserbyX1 小时前
一句话解释JS链式调用
前端·javascript
1024小神1 小时前
tauri项目,如何在rust端读取电脑环境变量
前端·javascript
Nano1 小时前
前端适配方案深度解析:从响应式到自适应设计
前端
古夕1 小时前
如何将异步操作封装为Promise
前端·javascript
小小小小宇1 小时前
前端定高和不定高虚拟列表
前端