Rollup系列之安装和入门

Rollup

Rollup.js‌的主要用途是将小的代码片段编译成更大、更复杂的代码,例如库或应用程序。它特别适用于将ES模块编译成不同的模块形式,如AMD、CommonJS、UMD等,以便在不同的环境中使用‌。

Rollup的应用场景与好处:

  • 插件或库的开发‌:Rollup可以将代码转成不同的模块形式,使得用户可以根据自身项目的模块语法来引入代码。
  • Tree-shaking‌:Rollup支持Tree-shaking(摇树优化),这意味着它只会打包被引用的代码,未被引用的代码不会被包含在内,从而减少了最终打包文件的大小。
  • ES模块支持‌:Rollup使用ES模块格式,这使得它可以无缝地组合和使用最喜欢的库中的个别函数,尤其是在未来所有场景都将原生支持ES模块的情况下‌1。

Rollup.js与Webpack和Babel的区别

  • 与Webpack的区别‌:Webpack主要用于JavaScript应用程序的静态模块打包,支持CSS、HTML、图片等多种资源的处理,而Rollup主要处理JavaScript代码,将其转换为不同的模块形式。组件库或插件适合用Rollup打包,而大型项目则更适合使用Webpack‌。
  • 与Babel的区别‌:Babel主要用于将高级JavaScript语法转换为低级版本以实现兼容性运行,而Rollup则是将JavaScript代码转换为不同的模块形式以供不同环境使用‌。

目前Vite直到Vite6.x版本还是使用Rollup打包生产环境,开发环境使用ESBuild。

安装

使用npm
npm i rollup -D
使用pnpm
pnpm add rollup

配置

命令配置

可以在package.json配置相关命令,下面是命令的相关含义。**注意:**在cmd环境下,如果没有全局安装需要添加npx,如:npx rollup -c index.js --file dist/index.js

基本选项及含义

-c, --config

使用指定的配置文件(如果没有指定值,默认为 rollup.config.js)。

示例:

rollup -c 使用 rollup.config.js 文件作为配置。

-d, --dir

输出文件的目录(如果未指定,则输出到标准输出)。

示例:

rollup -d dist 将输出到 dist 目录。

-e, --external

用逗号分隔的模块 ID 列表,指定不打包的外部依赖。

示例:

rollup -e lodash,reactlodashreact 作为外部依赖,不打包它们。

-f, --format

输出文件的类型(例如:amdcjsesiifeumdsystem)。

示例:

rollup -f cjs 生成 CommonJS 格式的文件。

-g, --globals

用逗号分隔的 moduleID:Global 键值对列表,定义全局变量映射。

示例:

rollup -f iife --globals jquery:jQuery,lodash:_jquery 映射到 window.jQuery,将 lodash 映射到 window._

-h, --help

显示帮助信息。

示例:

rollup -h 显示命令行选项的帮助信息。

-i, --input

输入文件(作为入口文件的替代)。

示例:

rollup -i src/main.js 指定 src/main.js 作为入口文件。

-m, --sourcemap

生成源映射文件(-m inline 为内联源映射)。

示例:

rollup -m 生成源映射文件。

-n, --name

为 UMD 格式的导出指定名称。

示例:

rollup -f umd -n MyLibrary 将生成一个 UMD 格式并命名为 MyLibrary 的库。

-o, --file

输出的单个文件(如果未指定,输出到标准输出)。

示例:

rollup -o dist/bundle.js 将结果输出到 dist/bundle.js 文件。

-p, --plugin

使用指定的插件(可以重复使用此选项)。

示例:

rollup -p plugin-name 使用指定的插件。

-v, --version

显示版本号。

示例:

rollup -v 显示当前的 Rollup 版本。

-w, --watch

监听文件变化并在更改时重新构建。

示例:

rollup -w 启动文件监视。

–amd.autoId

根据块的名称自动生成 AMD 模块 ID。

示例:

rollup --amd.autoId 根据输出文件名自动生成 AMD ID。

–banner

在打包文件的顶部插入指定的代码(外部包装器)。

示例:

rollup --banner '/* My custom banner */' 在生成的 bundle 文件顶部插入自定义横幅。

–chunkFileNames

指定二级块文件的名称模式。

示例:

rollup --chunkFileNames '[name]-[hash].js' 为二级块生成带有哈希值的文件名。

–compact

压缩包装器代码。

示例:

rollup --compact 会生成压缩的打包文件。

–entryFileNames

指定入口块文件的名称模式。

示例:

rollup --entryFileNames '[name].js' 为入口块生成文件名。

–environment

向配置文件传递环境设置(如示例中的 process.env)。

示例:

rollup -c --environment INCLUDE_DEPS,BUILD:production 将环境变量 INCLUDE_DEPSBUILD 传递到配置文件中。

–failAfterWarnings

如果构建产生警告,则以错误退出。

示例:

rollup --failAfterWarnings 使构建遇到警告时失败。

–no-dynamicImportInCjs

不写入外部的动态 CommonJS 导入。

示例:

rollup --no-dynamicImportInCjs 禁止动态导入。

–no-strict

不在生成的模块中添加 "use strict";

示例:

rollup --no-strict 生成的文件不会包含 "use strict"

–watch.onBundleEnd

在打包结束时执行指定的 shell 命令。

示例:

rollup --watch.onBundleEnd 'echo Build finished' 在构建完成时输出 “Build finished”。

–treeshake.manualPureFunctions

手动声明纯函数以进行树摇优化。

示例:

rollup --treeshake.manualPureFunctions 'myPureFunction'myPureFunction 函数标记为纯函数。

示例
  • 使用配置文件中的设置
  • rollup -c
  • 在配置文件中,process.env.INCLUDE_DEPS'true'process.env.BUILD'production'
  • rollup -c --environment INCLUDE_DEPS,BUILD:production
  • src/main.js 创建 CommonJS 格式的 bundle.js
  • rollup --format=cjs --file=bundle.js -- src/main.js
  • 创建自执行的 IIFE 格式,使用 window.jQuerywindow._ 作为外部全局变量

rollup -f iife --globals jquery:jQuery,lodash:_ -i src/app.js -o build/app.js -m build/app.js.map

文件配置

在项目根目录创建rollup.config.js文件

单产物配置

import { defineConfig } from 'rollup'export default defineConfig({input: 'src/index.js', // 入口文件output: {file: 'dist/bundle.js', // 打包输出的文件format: 'esm', // 输出文件的格式,如cjsname: 'bundle' // 输出文件的名称}
})

多产物配置

import { defineConfig } from 'rollup'const buildOptions = defineConfig({input: 'src/index.js',output: [{file: 'dist/rollup_cjs.js',format: 'cjs',name: 'rollup_cjs'},{file: 'dist/rollup_esm.js',format: 'esm',name: 'rollup_esm'},{file: 'dist/rollup_umd.js',format: 'umd',name: 'rollup_umd'},{file: 'dist/rollup_iife.js',format: 'iife',name: 'rollup_iife',}]
})
export default buildOptions

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

忘记海康网络摄像机IP

海康网络摄像机的使用: 海康网络摄像机的使用 解决电脑无法通过网线直连海康摄像机的问题 使用vlc显示海康网络摄像机的视频 忘记海康网络摄像机IP 一、引言 如果忘记了海康网络摄像机的IP,可以通过下载海康的设备网络搜索软件“SADP”解决。 二…

【CSS3】04-标准流 + 浮动 + flex布局

本文介绍浮动与flex布局。 目录 1. 标准流 2. 浮动 2.1 基本使用 特点 脱标 2.2 清除浮动 2.2.1 额外标签法 2.2.2 单伪元素法 2.2.3 双伪元素法(推荐) 2.2.4 overflow(最简单) 3. flex布局 3.1 组成 3.2 主轴与侧轴对齐方式 3.2.1 主轴 3.2.2 侧轴 3.3 修改主…

百度自动驾驶:我的学习笔记

自动驾驶新人之旅(9.0版) 第一课:初识自动驾驶技术 1. 自动驾驶技术概述 2. 自动驾驶人才需求与挑战 3. 如何使用Apollo学习自动驾驶[上机学习] 4. 如何使用Apollo学习自动驾驶[上车学习] 第二课:入门自动驾驶技术 1. Apollo车云研发流程 2. Lin…

并发编程之FutureTask.get()阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方案

FutureTask.get方法阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方法 FutureTask.get()方法阻塞陷阱:深度解析线程池CPU飚高问题排查与解决方法1、情景复现1.1 线程池工作原理1.2 业务场景模拟1.3 运行结果1.4 发现问题:线程池没有被关闭1.…

记录vite引入sass预编译报错error during build: [vite:css] [sass] Undefined variable.问题

vite.config.ts resolve: {alias: {: path.resolve(__dirname, src),},},css: {// css预处理器preprocessorOptions: {scss: {additionalData: use "/assets/styles/block.scss" as *;,}}},block.scss $colorGreen: #00ff00;index.vue :v-deep .font-size-14{colo…

代码小练习

public class Test3 {public static void main(String[] args) throws ParseException {ArrayList<Integer> listnew ArrayList<>();Scanner scnew Scanner(System.in);while (true){System.out.println("请输入一个整数");String s sc.nextLine();int…

百人会上的蔚小理与「来的刚刚好」的雷军

这就是2025百人会上的蔚小理&#xff0c;努力的李斌、宣扬飞行汽车的何小鹏与大讲开源的李想。那么小米汽车的模式是什么呢&#xff1f;站在蔚小理的肩上。 这就是2025百人会上的蔚小理&#xff0c;努力的李斌、宣扬飞行汽车的何小鹏与大讲开源的李想。那么小米汽车的模式是什么…

日程公布| 第八届地球空间大数据与云计算前沿大会与集中学习(3号通知)

日程公布| 第八届地球空间大数据与云计算前沿大会与集中学习&#xff08;3号通知&#xff09; 日程公布| 第八届地球空间大数据与云计算前沿大会与集中学习&#xff08;3号通知&#xff09;

<em>赚</em><em>钱</em><em>彩</em><em>票</em><em>软</em><em>件</em>

&#xff1c;em&#xff1e;赚&#xff1c;/em&#xff1e;&#xff1c;em&#xff1e;钱&#xff1c;/em&#xff1e;&#xff1c;em&#xff1e;彩&#xff1c;/em&#xff1e;&#xff1c;em&#xff1e;票&#xff1c;/em&#xff1e;&#xff1c;em&#xff1e;软&#xf…

随机2级域名引导页HTML源码

源码介绍 随机2级域名引导页HTML源码,每次点进去都随机一个域名前缀。 修改跳转域名在 350 行代码&#xff0c;源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行 效果预览 源码免费获取 随机2级域名引导页…

入栈操作-出栈操作

入栈操作 其 入栈操作 汇编代码流程解析如下&#xff1a; 出栈操作 其 出栈操作 汇编代码流程解析如下&#xff1a;

B3637 最长上升子序列

题目链接&#xff1a; 代码如下&#xff1a; #include<bits/stdc.h> #define int long long using namespace std; const int N 5050;int n; int arr[N]; int dp[N]; //dp数组signed main(){cin >> n;for(int i 1; i < n; i) cin >> arr[i];for(int i…

vscode通过root远程连接wsl

参考&#xff1a;vscode远程wsl时默认用root登录_vscode wsl root-CSDN博客

硬件基础--14_电功率

电功率 电功率:指电流在单位时间内做的功(表示用电器消耗电能快慢的一个物理量)。 单位:瓦特(W)&#xff0c;简称瓦。 公式:PUI(U为电压&#xff0c;单位为V&#xff0c;i为电流&#xff0c;单位为A&#xff0c;P为电功率&#xff0c;单位为W)。 单位换算:进位为1000&#xff…

【云服务器 | 下载 FFmpeg】云服务器上下载 ffmpeg + 配置

文章目录 FFmpeg 下载报错&#xff1a;已加载插件&#xff1a;fastestmirror1. 压缩包上传至服务器2. 解压3. 配置4. 添加FFmpeg到环境变量5. FFmpeg的配置5.1 安装 NASM5.2 安装x264 总结 可以看该博客&#xff0c;跟着这个步骤来的&#xff1a;https://blog.csdn.net/Aarstg/…

逆向--ARM64汇编

一、查看寄存器值 bl指令&#xff08;函数调用 bl的时候ret这个才有效&#xff09; 二、 bl 和lr 配合使用才达到函数调用的作用

【wow-rag系列】 task05 Ollama+llamaIndex+流式部署页面

文章目录 1.构建问答引擎2.构建基于FastAPI的后台3.构建流式输出的前端 1.构建问答引擎 新建一个engine.py文件 import os from llama_index.core.node_parser import SentenceSplitter# --------------------- # step 1.设定key、模型url、推理模型名称以及embedding模型名称 …

瑞芯微RKRGA(librga)Buffer API 分析

一、Buffer API 简介 在瑞芯微官方的 librga 库的手册中&#xff0c;有两组配置 buffer 的API&#xff1a; importbuffer 方式&#xff1a; importbuffer_virtualaddr importbuffer_physicaladdr importbuffer_fd wrapbuffer 方式&#xff1a; wrapbuffer_virtualaddr wrapb…

pycharm虚拟环境项目转移后配置解释器

添加解析器提示&#xff1a;无效的 Python SDK 解决方法 在到电脑安装python解析器&#xff0c;复制&#xff1a;python.exe和pythonw.exe 项目虚拟环境venv/Scripts Python解释器添加 项目现有虚拟环境&#xff0c;就可以正常使用

【智能体系统AgentOS】核心九:MCP工具

MCP&#xff08;Master Control Program&#xff09;是计算机控制系统中的核心部分&#xff0c;负责协调和管理整个系统的功能模块。不同的MCP可能会根据具体的应用场景有所不同&#xff0c;但通常有以下几类功能模块&#xff1a; 1. 输入输出&#xff08;I/O&#xff09;模块…