Skip to content

参考

版本基线 rollup 4.61.xlatest,Node ≥ 18)。CLI、核心配置、输出格式、官方插件、钩子与版本现状速查。

CLI 速查

命令/标志作用
rollup -c [file]加载配置文件(不传不读),默认找 rollup.config.js/.mjs/.cjs
-i / -o / -d入口 / 单文件输出 / 目录输出
-f <format>输出格式:es/cjs/iife/umd/amd/system
-wwatch 模式(环境变量 ROLLUP_WATCH='true'
-p <plugin>按名加载插件(自动补 @rollup/plugin- 前缀,可重复)
-m [inline]sourcemap(独立文件 / 内联)
--environment K:V注入 process.env.K = 'V' 供配置文件读取
--configPlugin typescript先用插件转译配置文件本身(跑 .ts 配置)
--bundleConfigAsCjs配置转 CJS 执行(可用 __dirname/require
--watch.onEnd "cmd"watch 事件点执行 shell 命令
--failAfterWarnings有警告即以错误码退出(CI 把关)

核心配置速查

配置要点
input字符串 / 数组 / 对象(key = chunk 名,含 / 进子目录)
external字符串 / 正则 / 函数;不打包、保留导入,运行时由宿主提供
plugins工厂函数调用结果数组;falsy 项被忽略(条件插件惯用法)
output.format默认 es;多 chunk 不支持 iife/umd
output.file / dir单 chunk 用 file,多 chunk 必须 dir
output.nameiife/umd 有导出时必填,全局变量名
output.globalsiife/umd 下 external → 全局变量映射
output.exportsauto(默认)/named/default/none;混合导出需 named
output.sourcemaptrue / 'inline' / 'hidden'
output.manualChunks对象或函数;函数返回 chunk 名,undefined 走默认
output.preserveModules逐模块输出不合并;tree-shaking 仍生效
output.inlineDynamicImports动态导入内联回单文件(仅单入口)
output.entryFileNames[name]/[hash]/[format]/[extname];4.x hash 为 url-safe base64 ≤21 字符
treeshaketrue(默认)/false/预设 smallest·recommended·safest/细项对象
watchinclude/exclude/buildDelay/clearScreen

常用官方插件速查

插件职责
@rollup/plugin-node-resolve按 Node 算法定位 node_modules 模块;读取 sideEffects 字段
@rollup/plugin-commonjsCommonJS → ESM(输入侧转换)
@rollup/plugin-json.json 可 import,未用字段可被摇掉
@rollup/plugin-babel接入 Babel;babelHelpers: 应用 bundled / 库 runtime
@rollup/plugin-typescript接入 TS 编译
@rollup/plugin-terser压缩;常放 output.plugins 按输出启用
@rollup/plugin-replace构建期常量替换(如 process.env.NODE_ENV
@rollup/plugin-alias路径别名

插件钩子速查

阶段钩子(按序)类型要点
Build(一轮/构建)options → buildStart → resolveId → load → transform → moduleParsed → buildEndresolveId/loadfirst(先答先得);transformsequential
Output(一轮/输出)outputOptions → renderStart → renderChunk → generateBundle → writeBundle → closeBundleoutput.plugins 只能用本阶段钩子
Watch 专属watchChange / closeWatcherparallel

虚拟模块约定:resolveId 返回 \0 前缀 id,阻止其他插件误处理。

JavaScript API 速记

js
const bundle = await rollup(inputOptions); // 建图 + tree-shake,不产出
await bundle.generate(outputOptions);      // 内存产出(可多次)
await bundle.write(outputOptions);         // 写盘
await bundle.close();                      // 必须调用

// watch:带 result 的事件必须 event.result.close();停止用 watcher.close()

版本现状(2026-06)

状态
rollup latest4.61.x(Node ≥ 18)
解析器基于 SWC 的 Rust 原生实现(4.0 起,acorn 移除;@rollup/wasm-node 回退)
Rolldown1.x(Rust、Rollup 兼容 API,VoidZero 主导)
Vite 8默认/统一打包内核为 Rolldown(此前为「开发 esbuild + 生产 Rollup」)
定位Rollup 本体维护/传承期,库打包存量生态依旧庞大