close

output

mode

V1.2.4 新增
  • 类型: "normal" | "brief"

Rsdoctor 报告模式,默认是 normal

  • normal: 在构建产物目录中生成一个 .rsdoctor 文件夹,其中包含各种数据文件,并在报告页面中展示代码。输出目录可以通过 reportDir 进行配置。
  • brief: 在构建产物目录的 .rsdoctor 文件夹中生成一个 HTML 报告文件,所有构建分析数据会整合注入到这个 HTML 文件中,可以通过浏览器打开该 HTML 文件查看报告。brief 模式还有更多配置项,详细信息请参阅:brief
Tip

mode 是没有 lite 配置项的,lite 模式即将废弃,参考 lite 模式废弃说明

options

V1.2.4 新增
  • 类型: BriefModeOptions | NormalModeOptions
  • 可选: true
  • 默认值: undefined
  • 描述: 根据不同的 mode 配置,options 支持不同的配置项:

mode: 'brief'

Brief 模式用于生成轻量级的分析报告,支持 HTML 和 JSON 两种输出格式。

  • type:输出类型,支持 'html''json' 数组,可同时选择多种格式
    • 如果配置了 ['html', 'json'],则会生成一个 html 文件,同时生成一个 json 文件。
    • 如果配置了 ['json'],则会生成一个 json 文件。文件名为 rsdoctor-data.json
    • 如果配置了 ['html'],则会生成一个 html 文件。文件名可通过 htmlOptions.reportHtmlName 配置。
  • htmlOptions:HTML 输出相关配置
    • reportHtmlName:HTML 报告文件名,默认为 report-rsdoctor.html
  • jsonOptions:JSON 输出相关配置
    • sections:JSON 输出包含的模块配置
      • moduleGraph:是否包含模块图数据,默认为 true
      • chunkGraph:是否包含 Chunk 图数据,默认为 true
      • rules:是否包含规则数据,默认为 true

注意事项:

  • Brief 模式下,reportCodeType 配置项无效,因为只支持 'noCode'

配置示例:

new RsdoctorRspackPlugin({
  output: {
    mode: 'brief',
    options: {
      // 同时输出 HTML 和 JSON 格式
      type: ['html', 'json'],
      htmlOptions: {
        reportHtmlName: 'my-report.html',
      },
    },
  },
});

HTML 与 JSON 输出格式的区别

特性HTML 格式JSON 格式
文件结构单文件,包含完整的分析报告页面纯数据文件,需要配合客户端使用
使用方式可直接在浏览器中打开查看需要上传到 Playground 或配合客户端解析
数据完整性包含所有分析数据和可视化界面仅包含原始分析数据
文件大小较大(包含样式和脚本)较小(仅数据)
适用场景• 离线查看报告
• 直接分享给他人
• 不需要二次处理
• 上传到 Playground
• 程序化处理
• 数据分析和集成
依赖关系无外部依赖,自包含需要 Rsdoctor 客户端支持

Playground 查看分析报告,详见 Playground

配置示例对比:

// 仅生成 HTML 报告(适合离线查看)
new RsdoctorRspackPlugin({
  output: {
    mode: 'brief',
    options: {
      type: ['html'],
      htmlOptions: {
        reportHtmlName: 'build-report.html',
      },
    },
  },
});

// 仅生成 JSON 数据(适合上传到 Playground)
new RsdoctorRspackPlugin({
  output: {
    mode: 'brief',
    options: {
      type: ['json'],
    },
  },
});

// 同时生成两种格式(适合不同使用场景)
new RsdoctorRspackPlugin({
  output: {
    mode: 'brief',
    options: {
      type: ['html', 'json'],
      htmlOptions: {
        reportHtmlName: 'build-report.html',
      },
    },
  },
});

mode: 'normal'

Normal 模式下的 options 为空对象,无额外配置项。

类型定义

BriefModeOptions

interface BriefModeOptions {
  /** 输出类型,支持 HTML 和 JSON */
  type?: Array<'html' | 'json'>;
  /** HTML 输出相关配置 */
  htmlOptions?: BriefConfig;
  /** JSON 输出相关配置 */
  jsonOptions?: JsonOptions;
}

interface BriefConfig {
  /** HTML 报告文件名,默认为 report-rsdoctor.html */
  reportHtmlName?: string;
  /** 是否额外生成 JSON 数据文件,默认为 false */
  writeDataJson: boolean;
}

interface JsonOptions {
  /** JSON 输出包含的模块配置 */
  sections?: JsonSectionOptions;
}

interface JsonSectionOptions {
  /** 是否包含模块图数据,默认为 true */
  moduleGraph?: boolean;
  /** 是否包含 Chunk 图数据,默认为 true */
  chunkGraph?: boolean;
  /** 是否包含规则数据,默认为 true */
  rules?: boolean;
}

NormalModeOptions

NormalModeOptions 目前类型为空 Object。

reportCodeType

  • 类型: "noModuleSource" | "noAssetsAndModuleSource" | "noCode" | { noModuleSource?: boolean; noAssetsAndModuleSource?: boolean; noCode?: boolean }
    • V2 时,类型将只支持 String 类型。
  • 可选: true
  • 默认值: undefined,undefined 时输出所有完整数据。
  • 描述: 选择输出的分析数据范围:
    • 默认:输出所有完整数据
    • noModuleSource:输出除模块(Module)代码外的数据,模块(Module)代码即产物((Module))内各个文件的打包模块代码
    • noAssetsAndModuleSource:输出除模块(Module)代码和 Assets 产物代码外的数据
    • noCode:输出除代码外的数据,即不输出任何代码

输出数据对比表

配置项包含的数据不包含数据适用场景文件大小
默认 (不配置)完整构建信息:
• Modules 数据及其打包后代码
• Assets 代码
• 其他分析数据
• 开发调试
• 完整分析
最大
noModuleSource• 构建信息
• Modules 数据及其打包后代码
• Assets 代码
• 其他分析数据
Modules 源代码• 不需要查看源代码
• 发生内存泄漏问题
中等
noAssetsAndModuleSource• 构建信息
• Modules 数据及其打包后代码
• 其他分析数据
Module 源代码、Assets 代码• 大型项目
• 不需要查看源代码和 Assets 代码
• 发生内存泄漏问题
较小
noCode• 构建信息
• Modules 数据
• 其他分析数据
所有代码(Module 源代码 + Module 打包后代码 + Assets 代码)• 大型项目
• CI/CD
• 发生内存泄漏问题
最小

数据输出从丰富到简的排序: 默认 > noModuleSource > noAssetsAndModuleSource > noCode

Asset 和 Module 解释,见术语

  • 示例:
new RsdoctorRspackPlugin({
  output: {
     reportCodeType: { noModuleSource: true } // { noAssetsAndModuleSource: true }
  }
}),

reportDir

  • 类型: string
  • 可选: true
  • 默认值: undefined

Rsdoctor 报告输出目录,默认是构建产物输出目录。

compressData

Warning

V2 中即将废弃,请使用 output.mode: 'brief'output.options.type: 'json' 代替。参考 compressData 配置迁移

  • 类型: boolean
  • 可选: true
  • 默认值: true

compressData 用于配置是否将 [outputDir]/.rsdoctor 下的分析数据进行压缩处理。