imtoken官网正版app下载|rollup
简介 | rollup.js 中文文档 | rollup.js中文网
简介 | rollup.js 中文文档 | rollup.js中文网
跳到主要内容rollup.js 中文文档REPLGitHub英文官网起步简介命令行接口JavaScript API更多信息教程ES 模块语法常见问题故障排除迁移到 Rollup 4Rollup 与其它工具的集成API配置选项插件开发起步简介本页总览简介概括Rollup 是一个用于 JavaScript 的模块打包工具,它将小的代码片段编译成更大、更复杂的代码,例如库或应用程序。它使用 JavaScript 的 ES6 版本中包含的新标准化代码模块格式,而不是以前的 CommonJS 和 AMD 等特殊解决方案。ES 模块允许你自由无缝地组合你最喜欢的库中最有用的个别函数。这在未来将在所有场景原生支持,但 Rollup 让你今天就可以开始这样做。安装npm install --global rollup这将使 Rollup 可以作为全局命令行工具使用。你也可以在本地安装它,请参阅 在本地安装 Rollup。快速开始可以通过带有可选配置文件的 命令行界面 或 JavaScript API 来使用 Rollup。运行rollup --help以查看可用选项和参数。参见 rollup-starter-lib 和 rollup-starter-app,以查看使用 Rollup 的示例库和应用程序项目。这些命令假定你的应用程序入口点命名为 main.js,并且希望将所有导入编译到一个名为 bundle.js 的单个文件中。对于浏览器:# 编译为包含自执行函数('iife')的 或者,使用 -f system 选项进行 SystemJS 构建:shellrollup src/main.js src/main2.js -f system -d dist通过以下方式安装 SystemJSshellnpm install --save-dev systemjs然后根据需要在 HTML 页面中加载一个或两个入口点:html
System.import('./dist/main2.js').then(({ default: main }) => main());
请参考 rollup-starter-code-splitting 示例,了解如何在支持原生 ES 模块的浏览器上设置使用它们的 Web 应用程序,并在必要时回退到 SystemJS。 在 GitHub 上编辑此页Previous pageJavascript APINext pageES 模块语法基于 MIT 协议发布Copyright © 2015-present Rollup 社区贡献者
配置选项 | rollup.js 中文文档 | rollup.js中文网
配置选项 | rollup.js 中文文档 | rollup.js中文网
跳到主要内容rollup.js 中文文档REPLGitHub英文官网起步简介命令行接口JavaScript API更多信息教程ES 模块语法常见问题故障排除迁移到 Rollup 4Rollup 与其它工具的集成API配置选项插件开发API配置选项本页总览配置选项核心功能external类型:(string \| RegExp)[]\| RegExp\| string\| (id: string, parentId: string, isResolved: boolean) => booleanCLI:-e/--external 该选项用于匹配需要排除在 bundle 外部的模块,它的值可以是一个接收模块 id 参数并返回 true (表示外部依赖)或 false (表示非外部依赖)的函数,也可以是一个模块 ID 数组或者正则表达式。除此之外,它还可以只是单个的模块 ID 或正则表达式。被匹配的模块 ID 应该满足以下条件之一:外部依赖的名称,需要和引入语句中写法完全一致。例如,如果想标记 import "dependency.js" 为外部依赖,就需要使用 "dependency.js" 作为模块 ID;而如果要标记 import "dependency" 为外部依赖,则使用 "dependency"。解析过的模块 ID(如文件的绝对路径)。// rollup.config.jsimport { fileURLToPath } from 'node:url';export default { //..., external: [ 'some-externally-required-library', fileURLToPath( new URL( 'src/some-local-file-that-should-not-be-bundled.js', import.meta.url ) ), /node_modules/ ]};请注意,如果要通过 /node_modules/ 正则表达式过滤掉包的引入,例如 import {rollup} from 'rollup',需要先使用类似 @rollup/plugin-node-resolve 的插件,来将引入依赖解析到 node_modules。当用作命令行参数时,该选项的值应该是一个以逗号分隔的模块 ID 列表:rollup -i src/main.js ... -e foo,bar,baz当该选项的值为函数时,它提供了三个参数 (id, parent, isResolved),可以为你提供更细粒度的控制:id 为相关模块 idparent 为进行引入的模块 idisResolved 表示 id 是否已被插件等解析当创建 iife 或 umd 格式的 bundle 时,你需要通过 output.globals 选项提供全局变量名,以替换掉外部引入。如果一个相对引入,即以 ./ 或 ../ 开头,被标记为 external,rollup 将在内部将该模块 ID 解析为绝对路径,以便引入的不同外部模块可以合并。当写入生成的 bundle 后,这些引入模块将再次被转换为相对引入。例如:// 输入// src/main.js (入口文件)import x from '../external.js';import './nested/nested.js';console.log(x);// src/nested/nested.js// 如果引入依赖已存在,它将指向同一个文件import x from '../../external.js';console.log(x);// 输出// 不同的依赖将会合并import x from '../external.js';console.log(x);console.log(x);如果存在多个入口,rollup 会转换回相对引入的方式,就像 output.file 或 output.dir 与入口文件或所有入口文件位于相同目录。input类型:string \| string []\| { [entryName: string]: string }CLI:-i/--input 该选项用于指定 bundle 的入口文件(例如,你的 main.js,app.js 或 index.js 文件)。如果值为一个入口文件的数组或一个将名称映射到入口文件的对象,那么它们将被打包到单独的输出 chunks。除非使用 output.file 选项,否则生成的 chunk 名称将遵循 output.entryFileNames 选项设置。当该选项的值为对象形式时,对象的属性名将作为文件名中的 [name],而对于值为数组形式,数组的值将作为入口文件名。请注意,当选项的值使用对象形式时,可以通过在名称中添加 / 来将入口文件放入不同的子文件夹。以下例子将根据 entry-a.js 和 entry-b/index.js,产生至少两个入口 chunks,即 index.js文件将输出在 entry-b 文件夹中:// rollup.config.jsexport default { ..., input: { a: 'src/main-a.js', 'b/index': 'src/main-b.js' }, output: { ..., entryFileNames: 'entry-[name].js' }};如果你想将一组文件转换为另一种格式,并同时保持文件结构和导出签名,推荐的方法是将每个文件变成一个入口文件,而不是使用 output.preserveModules,后者可能会导出被除屑优化,并产生由插件创建的虚拟文件。你可以动态地处理,例如通过 glob 包。import { globSync } from 'glob';import path from 'node:path';import { fileURLToPath } from 'node:url';export default { input: Object.fromEntries( globSync('src/**/*.js').map(file => [ // 这里将删除 `src/` 以及每个文件的扩展名。 // 因此,例如 src/nested/foo.js 会变成 nested/foo path.relative( 'src', file.slice(0, file.length - path.extname(file).length) ), // 这里可以将相对路径扩展为绝对路径,例如 // src/nested/foo 会变成 /project/src/nested/foo.js fileURLToPath(new URL(file, import.meta.url)) ]) ), output: { format: 'es', dir: 'dist' }};如果某些插件在 buildStart 钩子结束前至少生成了一个 chunk(使用 this.emitFile),则该选项可以省略。当使用命令行时,多个入口只需要多次使用该选项输入。当作为第一个选项提供时,相当于不以 --input 为前缀:rollup --format es --input src/entry1.js --input src/entry2.js# 等同于rollup src/entry1.js src/entry2.js --format es可以使用 = 赋值来命名 chunk:rollup main=src/entry1.js other=src/entry2.js --format es可以使用引号指定包含空格的文件名:rollup "main entry"="src/entry 1.js" "src/other entry.js" --format esoutput.dir类型:stringCLI:-d/--dir 该选项用于指定所有生成的 chunk 被放置在哪个目录中。如果生成一个以上的 chunk,那么这个选项是必需的。否则,可以使用 file 选项来代替。output.file类型:stringCLI:-o/--file 该选项用于指定要写入的文件。如果适用的话,也可以用于生成 sourcemap。只有在生成的 chunk 不超过一个的情况下才可以使用。output.format类型:stringCLI:-f/--format 默认:"es"该选项用于指定生成的 bundle 的格式。满足以下其中之一:amd – 异步模块加载,适用于 RequireJS 等模块加载器cjs – CommonJS,适用于 Node 环境和其他打包工具(别名:commonjs)es – 将 bundle 保留为 ES 模块文件,适用于其他打包工具,以及支持