build.rollupOptions.treeshake
作用是什么
- 控制是否进行 tree-shaking(删除未被使用的导出/语句)。
- 开启时:Rollup 会分析依赖图,移除未引用的代码(在判定无副作用时),如未调用的函数、未使用的导出等。
- 关闭(false)时:保留所有导出与顶层语句,不做“无用代码删除”。
build.rollupOptions.output.inlineDynamicImports
作用是什么
- 控制是否将通过
import()
的动态导入模块内联到入口,生成单一 bundle,并禁用代码分割。 - true:把所有动态导入都内联到入口,最终只输出一个文件,不产生额外 chunk。
- false:保留动态导入,允许代码分割;可能会输出多个 chunk(文件名由
chunkFileNames
模板控制)。
build.rollupOptions.output.format
作用是什么
- 指定打包产物的模块格式,影响运行环境与包装方式。
- “es”:ES Module 输出,保留
import
/export
顶层语义,不产生 IIFE/UMD 包裹,便于二次 tree-shaking。 - “cjs”:CommonJS 输出,使用
require
/module.exports
,适配需要 CJS 的运行环境。 - “umd”/“iife”:会生成包装(自执行或 UMD 包裹),可在浏览器无打包器场景直接使用,但会引入函数包装。
- 选择不同格式会影响与其他工具/运行时的互操作性与可优化空间。
build.rollupOptions.output.preserveModules
作用是什么
- 是否保留源代码的模块边界并按模块分别输出文件。
- true:为每个源模块都产出一个对应的文件,保持目录结构(可配合
preserveModulesRoot
);利于库多入口/按需引用,但不会得到单一文件。 - false:默认合并模块为 bundle/chunk;单入口、无动态导入时通常只产出一个入口文件(例如
index.js
)。 - 与代码分割相关:当存在动态导入且允许分割时,仍可能输出多个 chunk;若需要严格单文件,可结合
inlineDynamicImports: true
(但会失去分包能力)。