# Rsdoctor
> A one-stop build analyzer for Rspack projects.
## 指南
- [介绍](/zh/guide/start/intro.md): Rsdoctor 是一款面向 Rspack 项目的构建分析工具。 Rsdoctor 致力于成为一站式、智能化的构建分析工具,通过可视化与智能分析,使整个构建流程变得透明、可预测和可优化,从而帮助开发团队精准定位瓶颈、优化性能并提升工程质量。 Rsdoctor 用于分析基于 Rspack 构建的项目。webpack 项目应继续使用 Rsdoctor 1.x,或先迁移到 Rspack。详情请参阅 迁移指南。
- [快速开始](/zh/guide/start/quick-start.md): 本文档将介绍如何接入 Rsdoctor 能力。
- [功能导航](/zh/guide/start/features.md): 在这里,你可以了解到 Rsdoctor 支持的主要功能。
- [CI/CD 使用教程](/zh/guide/start/cicd.md): Brief 模式会生成一份自包含报告,适合作为 CI 产物保存或上传到 CDN。
- [GitHub Actions 集成](/zh/guide/start/action.md): 使用 rsdoctor-action 在 CI/CD 流程中集成 Rsdoctor 分析
- [CLI 使用教程](/zh/guide/start/cli.md): 我们提供了 @rsdoctor/cli 让你可以在本地通过 CLI 程序来使用 Rsdoctor 提供的功能
- [AI](/zh/guide/start/ai.md): 为了帮助 AI 更全面地了解 Rsdoctor 的功能、配置与最佳实践,从而在日常开发和问题排查过程中提供更准确的帮助,Rsdoctor 提供了以下能力: Agent SkillsAgent CLIllms.txtMarkdown 文档AGENTS.md
- [Playground](/zh/guide/start/playground.md)
- [项目概览](/zh/guide/usage/project-overall.md)
- [产物概览](/zh/guide/usage/bundle-overall.md)
- [编译概览](/zh/guide/usage/compile-overall.md)
- [编译预警](/zh/guide/usage/compile-alerts.md): 我们还集成了一些基于编译数据做检测的能力,如果本次编译结果中,存在命中了我们定义的规则的数据,则会在 Rsdoctor 主界面下方出现 Compile Alerts 模块,参考下图所示: 通过该模块可以比较直观的看到我们项目在编译方面的一些预警信息,有助于我们可以更进一步优化项目的编译性能。
- [产物预警](/zh/guide/usage/bundle-alerts.md)
- [Loaders 时序图](/zh/guide/usage/loaders-timeline.md)
- [Loaders 分析](/zh/guide/usage/loaders-analysis.md): Rsdoctor 提供了 Loader Analysis 模块,该模块主要功能是提供的针对 目录与文件维度 的 Loader 统计数据,来帮助你更好的针对分析文件夹以及单个文件在 Loader 编译中的情况。 点击导航栏 「Compile Analysis」-> 「Loader Analysis」选项,即可查看编译时分析报告。当然这个页面需要开启 loader 分析能力才会展示 features
- [Plugin 分析](/zh/guide/usage/plugins-analysis.md)
- [产物分析](/zh/guide/usage/bundle-size.md)
- [Module 引用链分析](/zh/guide/usage/module-analysis.md)
- [Resolver 分析](/zh/guide/usage/resolver.md): 我们在 Rsdoctor 内 Module Resolve 中,可以看到当前 Rspack 项目中的所有源文件,通过点击某个文件可以查看该文件中引入的模块路径、解析前后的路径对比、解析耗时等信息,其内容如下图所示:
- [编译诊断规则](/zh/guide/usage/rule-config.md): 构建诊断用于补充 ESLint 等静态检查工具。它基于 Rspack 构建数据执行,可以使用 ModuleGraph、模块元数据和生成的 runtime 代码等信息辅助判断。 在构建过程中发现了问题,会在 CLI 和最后弹出的诊断汇总网页中看到,如下图:
- [Bundle diff](/zh/guide/usage/bundle-diff.md): 我们提供了 Bundle Diff 的功能,可以让你进行对比分析两次构建产物发生的变化。 目前我们提供了以下几种使用方式: 通过 CLI 在本地打开报告通过 CLI 生成 JSON 报告在线上传分析(计划支持)
- [内置规则](/zh/guide/rules/rules.md)
- [自定义扩展规则](/zh/guide/rules/rule-custom.md)
- [数据上报](/zh/guide/rules/upload-data.md): 进行数据上报需要借助自定义拓展规则的接口,请先查看自定义拓展规则。 自定义规则的方式还可以用于用户数据收集和上报,像自定义拓展规则一样的方式,只是在 check 函数中不进行 report 上报错误即可。例如:
- [迁移到 Rsdoctor 2.0](/zh/guide/migration/migration-v2.md): Rsdoctor 2.0 围绕 Rspack 收敛了包结构。大多数项目只需要安装 @rsdoctor/core。此版本移除了多个独立包。请同时更新依赖和导入路径,避免在 2.0 代码中解析到 1.x 包。 推荐使用 rsdoctor-migrate-v2 Skill,让编码 Agent 检查项目、执行适用的迁移步骤并验证结果:
- [FAQ](/zh/guide/more/faq.md)
- [Rule index](/zh/guide/more/rules.md)
- [MCP server](/zh/guide/usage/mcp.md): Rsdoctor 2.x 已不再包含 @rsdoctor/mcp-server。 当前 AI 构建分析流程请使用 @rsdoctor/agent-cli。迁移步骤请参阅 Rsdoctor 2.0 迁移指南。旧版 MCP 使用说明已移至 Rsdoctor 1.x 归档。
## 配置
- [总览](/zh/config/options/options.md)
- [术语](/zh/config/options/term.md)
- [disableClientServer](/zh/config/options/disableClientServer.md): 类型: boolean可选: true默认值: false,当 process.CI 为 true 时,默认值为 true,即在 CI 环境中默认不启动报告服务。 是否需要自动打开 Rsdoctor 报告页面。如果你不需要在浏览器内查看本次 Rsdoctor 提供的分析报告,则可以开启这个配置项。
- [experiments](/zh/config/options/experiments.md)
- [features](/zh/config/options/features.md): 类型: RsdoctorRspackPluginFeatures | Array可选: true默认值: ["loader", "plugins", "bundle"]
- [output](/zh/config/options/output.md)
- [server](/zh/config/options/server.md): 类型: RsdoctorServerConfig可选: true默认值: {} 配置 Rsdoctor 报告服务。
- [supports](/zh/config/options/supports.md): 类型: Supports Types可选: true默认值: undefined 该选项用于控制详细的分析行为,例如 BannerPlugin 兼容、Bundle 解析和 gzip 大小计算。
- [mode](/zh/config/options/mode.md): 已移除的配置曾支持以下值: 类型: "normal" | "brief" | "lite"lite 已在 Rsdoctor 2.x 中移除且会被忽略,请改用 output.reportCodeType。可选: true默认值: normal 这些值对应以下报告行为: normal 模式: 在构建产物目录中生成一个 .rsdoctor 文件夹,其中包含各种数据文件,并在报告页面中展示代码。输出目录可以通过 reportDir 进行配置。brief 模式: 在报告输出目录中生成 rsdoctor-report.html。该目录默认为构建产物目录,也可通过 reportDir 配置。所有构建分析数据都会注入这个独立 HTML 文件,可以直接在浏览器中打开。可用配置项请参阅 mode: 'brief'。lite 模式: 基于普通模式,不展示源码和产物代码,仅显示打包后的代码信息。顶层 mode: 'lite' 配置已在 Rsdoctor 2.x 中移除且会被忽略。features lite 配置仍受支持。新配置请使用 output.reportCodeType。
- [multiCompiler](/zh/config/options/multiCompiler.md): 类型: boolean | { group?: string }默认值: true RsdoctorRspackPlugin 默认会自动识别同一次启动中的多个 compiler,为每个 compiler 创建独立的分析数据,并在报告中提供 compiler 切换入口。Rsbuild 的 environments 会直接使用 environment 名称,例如 web、node。 默认 compiler 仍输出到原有的 .rsdoctor 目录,其他 compiler 输出到 .rsdoctor/compilers/。 如果同一进程会同时创建多个互不相关的 compiler,可以设置为 false 来关闭跨插件实例的自动聚合。也可以提供 group,显式指定需要聚合的插件实例:
- [options-shared](/zh/config/options/options-shared.md)
## 博客
- [Rsdoctor 博客](/zh/blog/index.md): Rsdoctor 版本发布动态,以及构建分析与优化的实践指南。
- [Rsdoctor 2.0 发布公告](/zh/blog/release/release-note-2_0.md): 我们很高兴地宣布 Rsdoctor 2.0!🎉 从 2.0 开始,Rsdoctor 将全面聚焦 Rspack,webpack 项目可以继续使用 Rsdoctor 1.x。聚焦 Rspack 后,Rsdoctor 可以更深入地使用其内置能力,并持续围绕 Rspack 的构建模型和生态场景提供分析支持。 构建分析数据也不再只服务于报告页面:开发者可以通过可视化报告排查问题,coding agent 和自动化流程则可以直接查询同一份数据。2.0 同时带来了更快的分析、更完整的 compiler 支持和更轻量的安装体积。 本次更新的主要亮点包括: 更快的 Rspack 分析:2.0 全面聚焦 Rspack,耗时较长的数据处理在 Rspack 内部完成。该能力在 1.0 中作为可选项推出时,已将整体分析时间减少 20% 以上;2.0 默认启用,并进一步减少 stats 转换等重复处理。面向 agent 的构建分析:Agent CLI 与 Rsdoctor analysis skill 可以帮助 coding agent 查询构建数据,并给出可执行的优化建议。统一分析多 compiler 构建:常规 Rspack 插件可以自动处理 multi-compiler、Rsbuild environments 和 child compiler,同时保持每个 compiler 的数据相互隔离。更小的安装体积:核心能力统一收敛到 @rsdoctor/core。在 V2 中,完整生产安装包含的 package 从 83 个减少到 18 个,体积比 1.6.2 减少 56.6%。更快的增量构建分析:通过保留 loader 缓存、跳过非必要计算并优化报告写入,bench 中的 HMR 中位数降低约 47%。
- [Rsdoctor 1.2 发布公告](/zh/blog/release/release-note-1_2.md): Rsdoctor 1.2 版本已经发布啦 🎉 深入 concatenate module 分析:新增对 concatenate module(聚合模块)体积的分析能力,帮助开发者更精确地识别 Tree Shaking 后的实际打包体积。Bundle 体积分析支持 Gzip:Bundle 体积分析新增对 gzip 压缩体积的展示,让开发者能方便了解产物上线后的真实体积表现。Treemap 可视化增强:新增并优化了 Treemap(矩形树图)功能,帮助开发者以更直观方式洞察 bundle 组成和资源分布。Rsdoctor MCP Rsdoctor MCP 是一个借助 LLM 的构建分析工具,通过问答形式帮助开发者快速获取构建分析结果。
- [Rsdoctor 1.0 发布公告](/zh/blog/release/release-note-1_0.md): 我们很高兴地宣布 Rsdoctor 1.0 已经正式发布! 在经过一年的迭代与验证后,我们正式推出 Rsdoctor 1.0 —— 一款为 Rspack 生态量身打造的构建分析工具,同时也完全兼容 webpack 生态。 Rsdoctor 致力于成为一站式、智能化的构建分析工具,通过可视化与智能分析,使整个构建流程变得透明、可预测和可优化,从而帮助开发团队精准定位瓶颈、优化性能并提升工程质量。
- [Rsdoctor 0.4 发布公告](/zh/blog/release/release-note-0_4.md): Rsdoctor 0.4 已经发布啦! Rsdoctor 0.4 的新特性有: Brief 模式: 输出单个报告文件,适用于 CI 流程。Bundle Diff: 对比和分析两次构建产物的变化。Vue Loader 分析: 增加了对 Vue 项目中 loader 分析的支持。
- [Rsdoctor 0.3 发布公告](/zh/blog/release/release-note-0_3.md): Rsdoctor 0.3 已经发布啦! Rsdoctor 0.3 的新特性有: 自定义拓展规则:用户可以通过接口定制特有的规则检查。支持 Banner Plugin:增加了对 Banner Plugin 的支持,该插件会对产物代码添加模板包裹,因此 Rsdoctor 支持了变化后产物代码的分析。支持 ESM Loader 分析:支持了对 ESM Loader 的分析,以提升针对 Rspack 的编译分析能力。
- [Rsdoctor 0.1 发布公告](/zh/blog/release/release-note-0_1.md): 我们很高兴地宣布 Rsdoctor 0.1 发布了! Rsdoctor 是一个针对 Rspack 和 webpack 的一站式构建分析工具,可以对构建时和构建产物进行详细分析,让构建过程变得可视化和透明。
- [Loader 分析与优化](/zh/blog/topic/loader-optimization.md): 通常来说,优化 Loader 是比较常见的优化 Rspack 或 webpack 编译性能的方式,而大部分情况下,我们除了通过替换更快的 loader 之外,常见的手段就是给 loader 设置 module.rule.exclude 来减少执行。 而 Rsdoctor 提供了两个核心模块(Loader Overall / Loader Analysis)来帮助你根据 Loader 的调用信息进行深度优化。
- [重复依赖问题](/zh/blog/topic/duplicate-pkg-problem.md): Rsdoctor 会在产物预警中报告对同一份产物中含有多个重复依赖包的情况