{"id":39983648,"url":"https://github.com/winjs-dev/winjs-plugin-rsdoctor","last_synced_at":"2026-01-18T23:08:24.929Z","repository":{"id":321372473,"uuid":"1085483731","full_name":"winjs-dev/winjs-plugin-rsdoctor","owner":"winjs-dev","description":"WinJS plugin for Rsdoctor - Build analysis and performance optimization tool.","archived":false,"fork":false,"pushed_at":"2025-12-31T16:39:52.000Z","size":512,"stargazers_count":4,"open_issues_count":4,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-05T01:48:04.087Z","etag":null,"topics":["build-analysis","performance","plugin","rsdoctor","winjs","winjs-dev"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/winjs-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-29T05:18:41.000Z","updated_at":"2025-12-15T06:20:02.000Z","dependencies_parsed_at":"2025-10-29T10:30:49.798Z","dependency_job_id":null,"html_url":"https://github.com/winjs-dev/winjs-plugin-rsdoctor","commit_stats":null,"previous_names":["winjs-dev/winjs-plugin-rsdoctor"],"tags_count":1,"template":false,"template_full_name":"winjs-dev/winjs-plugin-template","purl":"pkg:github/winjs-dev/winjs-plugin-rsdoctor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fwinjs-plugin-rsdoctor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fwinjs-plugin-rsdoctor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fwinjs-plugin-rsdoctor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fwinjs-plugin-rsdoctor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/winjs-dev","download_url":"https://codeload.github.com/winjs-dev/winjs-plugin-rsdoctor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/winjs-dev%2Fwinjs-plugin-rsdoctor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28553070,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T20:59:07.572Z","status":"ssl_error","status_checked_at":"2026-01-18T20:59:02.799Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["build-analysis","performance","plugin","rsdoctor","winjs","winjs-dev"],"created_at":"2026-01-18T23:08:24.288Z","updated_at":"2026-01-18T23:08:24.924Z","avatar_url":"https://github.com/winjs-dev.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @winner-fed/plugin-rsdoctor\n\nWinJS 的 Rsdoctor 插件，用于构建分析和性能优化。\n\n\u003cp\u003e\n  \u003ca href=\"https://npmjs.com/package/@winner-fed/plugin-rsdoctor\"\u003e\n   \u003cimg src=\"https://img.shields.io/npm/v/@winner-fed/plugin-rsdoctor?style=flat-square\u0026colorA=564341\u0026colorB=EDED91\" alt=\"npm version\" /\u003e\n  \u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg?style=flat-square\u0026colorA=564341\u0026colorB=EDED91\" alt=\"license\" /\u003e\n  \u003ca href=\"https://npmcharts.com/compare/@winner-fed/plugin-rsdoctor?minimal=true\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/@winner-fed/plugin-rsdoctor.svg?style=flat-square\u0026colorA=564341\u0026colorB=EDED91\" alt=\"downloads\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## 介绍\n\n[Rsdoctor](https://rsdoctor.rs) 是一个面向 Rspack 和 Webpack 的构建分析工具，提供构建时间分析、编译分析、产物分析等能力，帮助开发者分析并优化构建性能。\n\n本插件将 Rsdoctor 集成到 WinJS 框架中，支持 Rspack、Webpack 和 Rsbuild 构建工具。\n\n## 构建工具支持\n\n| 构建工具 | 支持情况 | 实现方式                              | 所需依赖 |\n|---------|---------|-----------------------------------|---------|\n| **Webpack** | ✅ 支持 | `@rsdoctor/webpack-plugin`        | `@rsdoctor/webpack-plugin` |\n| **Rsbuild** | ✅ 支持 | 手动注册，依赖 `@rsdoctor/rspack-plugin` | `@rsdoctor/rspack-plugin` |\n| **Vite** | ❌ 不支持 | -                                 | - |\n\n## 安装\n\n根据你使用的构建工具选择安装：\n\n### Webpack 项目\n\n```bash\n# pnpm（推荐）\npnpm add -D @winner-fed/plugin-rsdoctor @rsdoctor/webpack-plugin\n\n# npm\nnpm add -D @winner-fed/plugin-rsdoctor @rsdoctor/webpack-plugin\n```\n\n### Rsbuild 项目\n\n```bash\n# pnpm（推荐）\npnpm add -D @winner-fed/plugin-rsdoctor @rsdoctor/rspack-plugin\n\n# npm\nnpm add -D @winner-fed/plugin-rsdoctor @rsdoctor/rspack-plugin\n```\n\n## 使用\n\n在 `.winrc.ts` 中配置插件：\n\n```ts\n// .winrc.ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  // 启用 rsdoctor\n  rsdoctor: true\n};\n```\n\n然后运行构建命令，Rsdoctor 会自动打开分析页面：\n\n```bash\nnpm run dev\n# 或\nnpm run build\n```\n\n## 配置选项\n\n### 基础用法\n\n简单启用，使用默认配置：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: true\n};\n```\n\n### 高级配置\n\n传递详细配置给 Rsdoctor：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    // 禁用客户端服务器（构建完成后不自动打开浏览器）\n    disableClientServer: false,\n    \n    // 报告模式：brief（简要）、normal（正常）、full（完整）\n    mode: 'normal',\n    \n    // 启用的分析特性\n    features: {\n      loader: true,      // Loader 分析\n      plugins: true,     // 插件分析\n      resolver: true,    // 解析器分析\n      bundle: true,      // 产物分析\n      treeShaking: true  // Tree Shaking 分析\n    },\n    \n    // Linter 规则配置\n    linter: {\n      level: 'warn',     // 规则级别：off | warn | error\n      extends: [],       // 扩展的规则集\n      rules: {}          // 自定义规则\n    },\n    \n    // 其他支持特性\n    supports: {\n      generateTileGraph: true  // 生成平铺图\n    },\n    \n    // 分析报告输出配置\n    output: {\n      mode: 'normal',                     // 报告模式：brief | normal\n      reportCodeType: {\n        noModuleSource: false,            // 不输出模块源代码\n        noAssetsAndModuleSource: false    // 不输出资源和模块源代码\n      },\n      reportDir: './reports',             // 报告输出目录\n      options: {\n        type: ['html', 'json'],           // 输出类型\n        htmlOptions: {\n          reportHtmlName: 'report-rsdoctor.html'  // HTML 文件名\n        },\n        jsonOptions: {\n          sections: {\n            moduleGraph: true,            // 包含模块图数据\n            chunkGraph: true,             // 包含 Chunk 图数据\n            rules: true                   // 包含规则数据\n          }\n        },\n        compressData: false               // 是否压缩数据\n      }\n    },\n    \n    // Rsdoctor 分析服务器端口号\n    port: 8791\n  }\n};\n```\n\n### 配置选项说明\n\n#### disableClientServer\n\n- 类型：`boolean`\n- 默认值：`false`\n- 说明：是否禁用客户端服务器。设置为 `true` 时，构建完成后不会自动打开浏览器分析页面。\n\n#### features\n\n- 类型：`object`\n- 说明：控制启用的分析特性\n\n  - `loader`：是否启用 Loader 分析，分析各个 loader 的执行时间和输入输出\n  - `plugins`：是否启用插件分析，分析各个插件的执行时间\n  - `resolver`：是否启用解析器分析，分析模块解析过程\n  - `bundle`：是否启用产物分析，分析最终产物的体积和组成\n  - `treeShaking`：是否启用 Tree Shaking 分析，分析未使用的代码\n\n#### linter\n\n- 类型：`object`\n- 说明：Linter 规则配置，用于检测构建过程中的潜在问题\n\n  - `level`：规则级别，可选值 `'off'` | `'warn'` | `'error'`\n  - `extends`：扩展的规则集数组\n  - `rules`：自定义规则对象\n\n#### supports\n\n- 类型：`object`\n- 说明：其他支持的特性配置\n\n  - `generateTileGraph`：是否生成平铺图，用于可视化模块关系\n\n#### output\n\n- 类型：`object`\n- 默认值：`undefined`\n- 说明：分析报告输出配置对象\n\n**子配置项：**\n\n##### output.mode\n\n- 类型：`'brief' | 'normal'`\n- 默认值：`'normal'`\n- 说明：报告模式\n  - `normal`：在构建产物目录中生成一个 `.rsdoctor` 文件夹，包含各种数据文件，并在报告页面中展示代码\n  - `brief`：在构建产物目录中生成单个 HTML 报告文件，所有构建信息都整合到这个 HTML 文件中\n\n##### output.reportCodeType\n\n- 类型：`{ noModuleSource?: boolean; noAssetsAndModuleSource?: boolean }`\n- 默认值：`undefined`\n- 说明：报告代码类型配置，用于控制输出数据大小，适用于大型项目减小报告体积\n  - `noModuleSource`：不输出模块源代码\n  - `noAssetsAndModuleSource`：不输出资源和模块源代码\n\n##### output.reportDir\n\n- 类型：`string`\n- 默认值：`undefined`\n- 说明：报告输出目录路径，相对于当前工作目录或绝对路径。指定报告文件存放的位置\n\n##### output.options\n\n- 类型：`object`\n- 默认值：`undefined`\n- 说明：分析报告输出选项配置\n\n**子配置项：**\n\n###### output.options.type\n\n- 类型：`Array\u003c'html' | 'json'\u003e`\n- 默认值：`undefined`\n- 说明：输出类型，支持 `'html'` 和 `'json'` 数组，可同时选择多种格式\n  - 如果配置了 `['html', 'json']`，则会生成一个 html 文件，同时生成一个 json 文件\n  - 如果配置了 `['json']`，则会生成一个 json 文件。文件名为 `rsdoctor-data.json`\n  - 如果配置了 `['html']`，则会生成一个 html 文件。文件名可通过 `htmlOptions.reportHtmlName` 配置\n\n###### output.options.htmlOptions\n\n- 类型：`object`\n- 说明：HTML 输出相关配置\n  - `reportHtmlName`：HTML 报告文件名，默认为 `report-rsdoctor.html`\n\n###### output.options.jsonOptions\n\n- 类型：`object`\n- 说明：JSON 输出相关配置\n  - `sections`：JSON 输出包含的模块配置\n    - `moduleGraph`：是否包含模块图数据，默认为 `true`\n    - `chunkGraph`：是否包含 Chunk 图数据，默认为 `true`\n    - `rules`：是否包含规则数据，默认为 `true`\n\n###### output.options.compressData\n\n- 类型：`boolean`\n- 默认值：`false`\n- 说明：是否压缩分析数据。启用后可以减小报告文件大小\n\n**使用示例：**\n\n```ts\noutput: {\n  mode: 'normal',\n  reportDir: './reports',\n  reportCodeType: {\n    noModuleSource: true\n  },\n  options: {\n    type: ['html', 'json'],\n    htmlOptions: {\n      reportHtmlName: 'my-report.html'\n    },\n    jsonOptions: {\n      sections: {\n        moduleGraph: true,\n        chunkGraph: true,\n        rules: false\n      }\n    },\n    compressData: true\n  }\n}\n```\n\n参考：[Rsdoctor Output 配置文档](https://rsdoctor.rs/zh/config/options/output)\n\n#### port\n\n- 类型：`number`\n- 默认值：`8791`\n- 说明：指定 Rsdoctor 分析服务器的端口号。当启用客户端服务器时（`disableClientServer: false`），会在此端口启动本地服务来展示分析报告。\n\n\n## 常见使用场景\n\n### 场景 1：仅在需要时启用\n\n建议仅在需要分析构建时启用 Rsdoctor，通过环境变量控制：\n\n```ts\n// .winrc.ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: process.env.RSDOCTOR === 'true'\n};\n```\n\n在 `package.json` 中添加专门的脚本：\n\n```json\n{\n  \"scripts\": {\n    \"dev\": \"win dev\",\n    \"dev:doctor\": \"RSDOCTOR=true win dev\",\n    \"build\": \"win build\",\n    \"build:doctor\": \"RSDOCTOR=true win build\"\n  }\n}\n```\n\n### 场景 2：轻量级分析\n\n如果只需要快速分析，可以使用简要模式并禁用部分特性：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    mode: 'brief',\n    features: {\n      loader: true,\n      bundle: true,\n      plugins: false,\n      resolver: false,\n      treeShaking: false\n    }\n  }\n};\n```\n\n### 场景 3：CI/CD 环境\n\n在持续集成环境中，可能不需要打开浏览器：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    disableClientServer: true,\n    mode: 'normal'\n  }\n};\n```\n\n### 场景 4：深度优化分析\n\n需要全面分析和优化时，开启所有特性：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    mode: 'normal',\n    features: {\n      loader: true,\n      plugins: true,\n      resolver: true,\n      bundle: true,\n      treeShaking: true\n    },\n    linter: {\n      level: 'warn'\n    },\n    supports: {\n      generateTileGraph: true\n    }\n  }\n};\n```\n\n### 场景 5：自定义输出路径和端口\n\n自定义报告输出位置和服务器端口：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    // 自定义输出配置\n    output: {\n      mode: 'normal',\n      reportDir: './dist/reports'\n    },\n    // 使用 9000 端口启动分析服务器\n    port: 9000\n  }\n};\n```\n\n### 场景 6：多项目共存\n\n在多个项目同时开启 Rsdoctor 时，避免端口冲突：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    // 为不同项目配置不同端口\n    port: 8792, // 项目 A 使用 8792\n    output: {\n      reportDir: `./rsdoctor-report-${Date.now()}` // 按时间戳命名避免覆盖\n    }\n  }\n};\n```\n\n### 场景 7：大型项目优化报告体积\n\n对于大型项目，可以通过配置减小报告文件大小：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    output: {\n      mode: 'brief',  // 使用 brief 模式生成轻量级报告\n      reportDir: './reports',\n      // 不输出模块源代码，减小报告体积\n      reportCodeType: {\n        noModuleSource: true\n      },\n      options: {\n        type: ['json'],  // 只生成 JSON 文件\n        jsonOptions: {\n          sections: {\n            moduleGraph: false,  // 不包含模块图数据\n            chunkGraph: true,\n            rules: false\n          }\n        },\n        compressData: true  // 启用数据压缩\n      }\n    }\n  }\n};\n```\n\n### 场景 8：同时生成 HTML 和 JSON 报告\n\n同时生成 HTML 和 JSON 格式的报告，方便不同场景使用：\n\n```ts\nexport default {\n  plugins: ['@winner-fed/plugin-rsdoctor'],\n  rsdoctor: {\n    output: {\n      mode: 'normal',\n      reportDir: './reports',\n      options: {\n        type: ['html', 'json'],  // 同时生成 HTML 和 JSON\n        htmlOptions: {\n          reportHtmlName: 'analysis-report.html'\n        },\n        jsonOptions: {\n          sections: {\n            moduleGraph: true,\n            chunkGraph: true,\n            rules: true\n          }\n        }\n      }\n    }\n  }\n};\n```\n\n## Rsdoctor 分析内容\n\n启用 Rsdoctor 后，你可以获得以下分析数据：\n\n- **构建时间分析**：各个阶段的构建时间分布\n- **Loader 分析**：各个 loader 的执行时间和转换结果\n- **插件分析**：各个插件的执行时间和影响\n- **模块分析**：模块的依赖关系和体积\n- **产物分析**：最终产物的体积、重复依赖等\n- **Tree Shaking 分析**：未使用的代码检测\n- **Resolver 分析**：模块解析路径和性能\n\n## 版本要求\n\n- `@rsdoctor/rspack-plugin`: \u003e= 1.3.6\n- `@winner-fed/winjs`: \u003e= 0.17.0\n\n## 更多信息\n\n- [Rsdoctor 官网](https://rsdoctor.rs)\n- [Rsdoctor GitHub](https://github.com/web-infra-dev/rsdoctor)\n- [使用指南](https://rsdoctor.rs/zh/guide/start/intro)\n\n## License\n\n[MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinjs-dev%2Fwinjs-plugin-rsdoctor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwinjs-dev%2Fwinjs-plugin-rsdoctor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwinjs-dev%2Fwinjs-plugin-rsdoctor/lists"}