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(但会失去分包能力)。