@rsdoctor/docs 0.0.0-next-20240620044732

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/LICENSE +21 -0
  2. package/docs/404.mdx +7 -0
  3. package/docs/en/_meta.json +17 -0
  4. package/docs/en/blog/_meta.json +12 -0
  5. package/docs/en/blog/release/_meta.json +1 -0
  6. package/docs/en/blog/release/release-note-1.mdx +129 -0
  7. package/docs/en/blog/topic/_meta.json +1 -0
  8. package/docs/en/blog/topic/duplicate-pkg-problem.mdx +141 -0
  9. package/docs/en/blog/topic/loader-optimization.mdx +80 -0
  10. package/docs/en/config/_meta.json +7 -0
  11. package/docs/en/config/options/_meta.json +1 -0
  12. package/docs/en/config/options/options-shared.mdx +67 -0
  13. package/docs/en/config/options/options.mdx +195 -0
  14. package/docs/en/config/options/term.mdx +10 -0
  15. package/docs/en/guide/_meta.json +17 -0
  16. package/docs/en/guide/more/_meta.json +1 -0
  17. package/docs/en/guide/more/faq.mdx +104 -0
  18. package/docs/en/guide/more/rules.mdx +5 -0
  19. package/docs/en/guide/start/_meta.json +1 -0
  20. package/docs/en/guide/start/cli.mdx +94 -0
  21. package/docs/en/guide/start/features.mdx +36 -0
  22. package/docs/en/guide/start/intro.mdx +115 -0
  23. package/docs/en/guide/start/quick-start-shared.mdx +184 -0
  24. package/docs/en/guide/start/quick-start.mdx +29 -0
  25. package/docs/en/guide/usage/_meta.json +14 -0
  26. package/docs/en/guide/usage/bundle-alerts.mdx +47 -0
  27. package/docs/en/guide/usage/bundle-overall.mdx +55 -0
  28. package/docs/en/guide/usage/bundle-size.mdx +148 -0
  29. package/docs/en/guide/usage/compile-alerts.mdx +18 -0
  30. package/docs/en/guide/usage/compile-overall.mdx +115 -0
  31. package/docs/en/guide/usage/loaders-analysis.mdx +72 -0
  32. package/docs/en/guide/usage/loaders-timeline.mdx +68 -0
  33. package/docs/en/guide/usage/module-analysis.mdx +58 -0
  34. package/docs/en/guide/usage/plugins-analysis.mdx +43 -0
  35. package/docs/en/guide/usage/project-overall.mdx +51 -0
  36. package/docs/en/guide/usage/resolver.mdx +32 -0
  37. package/docs/en/guide/usage/rule-config.mdx +85 -0
  38. package/docs/en/index.md +38 -0
  39. package/docs/public/netlify.toml +4 -0
  40. package/docs/public/og-image.png +0 -0
  41. package/docs/zh/_meta.json +17 -0
  42. package/docs/zh/blog/_meta.json +12 -0
  43. package/docs/zh/blog/release/_meta.json +1 -0
  44. package/docs/zh/blog/release/release-note-1.mdx +128 -0
  45. package/docs/zh/blog/topic/_meta.json +1 -0
  46. package/docs/zh/blog/topic/duplicate-pkg-problem.mdx +138 -0
  47. package/docs/zh/blog/topic/loader-optimization.mdx +80 -0
  48. package/docs/zh/config/_meta.json +7 -0
  49. package/docs/zh/config/options/_meta.json +1 -0
  50. package/docs/zh/config/options/options-shared.mdx +70 -0
  51. package/docs/zh/config/options/options.mdx +170 -0
  52. package/docs/zh/config/options/term.mdx +10 -0
  53. package/docs/zh/guide/_meta.json +17 -0
  54. package/docs/zh/guide/more/_meta.json +1 -0
  55. package/docs/zh/guide/more/faq.mdx +102 -0
  56. package/docs/zh/guide/more/rules.mdx +5 -0
  57. package/docs/zh/guide/start/_meta.json +1 -0
  58. package/docs/zh/guide/start/cli.mdx +94 -0
  59. package/docs/zh/guide/start/features.mdx +36 -0
  60. package/docs/zh/guide/start/intro.mdx +116 -0
  61. package/docs/zh/guide/start/quick-start-shared.mdx +183 -0
  62. package/docs/zh/guide/start/quick-start.mdx +29 -0
  63. package/docs/zh/guide/usage/_meta.json +14 -0
  64. package/docs/zh/guide/usage/bundle-alerts.mdx +49 -0
  65. package/docs/zh/guide/usage/bundle-overall.mdx +57 -0
  66. package/docs/zh/guide/usage/bundle-size.mdx +148 -0
  67. package/docs/zh/guide/usage/compile-alerts.mdx +18 -0
  68. package/docs/zh/guide/usage/compile-overall.mdx +115 -0
  69. package/docs/zh/guide/usage/loaders-analysis.mdx +73 -0
  70. package/docs/zh/guide/usage/loaders-timeline.mdx +68 -0
  71. package/docs/zh/guide/usage/module-analysis.mdx +59 -0
  72. package/docs/zh/guide/usage/plugins-analysis.mdx +43 -0
  73. package/docs/zh/guide/usage/project-overall.mdx +51 -0
  74. package/docs/zh/guide/usage/resolver.mdx +32 -0
  75. package/docs/zh/guide/usage/rule-config.mdx +86 -0
  76. package/docs/zh/index.md +38 -0
  77. package/docs/zh/shared/features-rspack.md +24 -0
  78. package/docs/zh/shared/features.md +29 -0
  79. package/package.json +45 -0
  80. package/src/components/NextSteps.module.scss +6 -0
  81. package/src/components/NextSteps.tsx +7 -0
  82. package/src/components/Overview.module.scss +61 -0
  83. package/src/components/Overview.tsx +40 -0
  84. package/src/components/RuleIndex.module.scss +57 -0
  85. package/src/components/RuleIndex.tsx +75 -0
  86. package/src/components/Step.module.scss +32 -0
  87. package/src/components/Step.tsx +13 -0
  88. package/src/global.d.ts +4 -0
  89. package/src/utils.ts +9 -0
@@ -0,0 +1,94 @@
1
+ # CLI 使用教程
2
+
3
+ 我们提供了 `@rsdoctor/cli` 让你可以在本地通过 CLI 程序来使用 Rsdoctor 提供的功能
4
+
5
+ :::tip
6
+ `@rsdoctor/webpack-plugin`、`@rsdoctor/rspack-plugin` 与 `@rsdoctor/cli` 要保持同一个 major 和 minor 版本。
7
+ :::
8
+
9
+ ## 安装 @rsdoctor/cli
10
+
11
+ :::tip
12
+
13
+ - @rsdoctor/cli & @rsdoctor/webpack-plugin & @rsdoctor/rspack-plugin >= 0.1.2。
14
+ - 可以使用非安装方式,使用 `npx @rsdoctor/cli <command> [options]`。
15
+
16
+ :::
17
+
18
+ import { PackageManagerTabs } from '@theme';
19
+
20
+ import { Tab, Tabs } from 'rspress/theme';
21
+
22
+ <PackageManagerTabs command="add @rsdoctor/cli -D" />
23
+
24
+ ## 命令使用
25
+
26
+ ```linux
27
+
28
+ rsdoctor <command> [options]
29
+
30
+ ```
31
+
32
+ `@rsdoctor/cli` 目前提供了以下几个命令对应不同的功能:
33
+
34
+ ### analyze 命令
35
+
36
+ `analyze` 命令主要是用于在**本地**加载 [manifest.json](../../config/options/term.mdx) 并且无需再次构建直接启动 Rsdoctor 的分析报告页面。
37
+
38
+ ```linux
39
+ rsdoctor analyze --profile <manifestFile>
40
+ ```
41
+
42
+ **参数定义**
43
+
44
+ - `manifestFile` 即为 [manifest.json](../../config/options/term.mdx) 的路径(支持本地路径)
45
+
46
+ **使用示例**
47
+
48
+ ```bash
49
+ rsdoctor analyze --profile "./dist/.rsdoctor/manifest.json"
50
+ ```
51
+
52
+ ## Node API
53
+
54
+ 我们在 `@rsdoctor/cli` 中提供了 Node.js API,可以让你在 Node.js 运行时进行调用。
55
+
56
+ **引入模块**
57
+
58
+ <Tabs>
59
+
60
+ <Tab label="cjs">
61
+
62
+ ```js
63
+ const { execute } = require('@rsdoctor/cli');
64
+ ```
65
+
66
+ </Tab>
67
+
68
+ <Tab label="esm">
69
+
70
+ ```js
71
+ import { execute } from '@rsdoctor/cli';
72
+ ```
73
+
74
+ </Tab>
75
+
76
+ </Tabs>
77
+
78
+ **execute()**
79
+
80
+ `execute` 异步函数是 Rsdoctor CLI 的执行函数,通过调用 `execute` 函数就会自动解析 [process.argv](https://nodejs.org/dist/latest-v18.x/docs/api/process.html#processargv),然后调用不同的命令。
81
+
82
+ **execute('analyze', \{...\})**
83
+
84
+ 如果你需要通过 Node.js API 直接执行 [analyze 命令](#analyze-命令),则可以通过如下方式调用:
85
+
86
+ ```ts
87
+ execute('analyze', {
88
+ profile: 'input the manifest.json path or url',
89
+ }).then((sdk) => {
90
+ console.log('execute "anaylze" command success');
91
+ // you can stop the Rsdoctor's dev-server by calling the sdk'api below:
92
+ // sdk.dispose();
93
+ });
94
+ ```
@@ -0,0 +1,36 @@
1
+ # 功能导航
2
+
3
+ 在这里,你可以了解到 Rsdoctor 支持的主要功能。
4
+
5
+ ## 构建概览
6
+
7
+ | 功能 | 描述 | 相关链接 |
8
+ | -------- | ------------------------------ | ------------------------------------ |
9
+ | 项目概览 | 查看当前项目配置、版本等信息 | [项目概览](../usage/project-overall) |
10
+ | 产物概览 | 查看当前项目构建产物的信息 | [产物概览](../usage/bundle-overall) |
11
+ | 编译概览 | 查看当前项目编译过程的数据信息 | [编译概览](../usage/compile-overall) |
12
+ | 产物预警 | 基于构建产物数据做检测的能力 | [产物预警](../usage/bundle-alerts) |
13
+ | 编译预警 | 基于编译数据做检测的能力 | [编译预警](../usage/compile-overall) |
14
+
15
+ ## 编译分析
16
+
17
+ | 功能 | 描述 | 相关链接 |
18
+ | --------------------- | -------------------------------------------------------- | --------------------------------------------------------------- |
19
+ | 编译概览 | 查看当前项目编译过程的数据信息 | [编译概览](../usage/compile-overall) |
20
+ | 编译预警 | 基于编译数据做检测的能力 | [编译预警](../usage/compile-alerts) |
21
+ | Loader 编译行为分析 | 以目录与文件维度的 Loader 分析数据,展示单个文件编译行为 | [Loaders 分析](../usage/loaders-analysis) |
22
+ | Loaders 耗时分析 | 当前项目中所有 Loader 的执行时序图 | [Loaders 时序图](../usage/loaders-timeline) |
23
+ | Plugins 分析 | 项目所使用插件的数据分析 | [Plugins 分析](../usage/plugins-analysis) |
24
+ | Resolver 分析 | Resolver 解析能力分析数据 | [Resolver 分析](../usage/resolver) |
25
+ | Loader 耗时分析及优化 | 该文档介绍如何使用 Rsdoctor 进行构建耗时分析并优化 | [ Loader 耗时分析及优化 ](../../blog/topic/loader-optimization) |
26
+
27
+ ## 构建产物分析
28
+
29
+ | 功能 | 描述 | 相关链接 |
30
+ | ----------- | ----------------------------------------------------------------------------- | ---------------------------------------------------- |
31
+ | 产物概览 | 查看当前项目构建产物的信息 | [产物概览](../usage/bundle-overall) |
32
+ | 产物预警 | 基于构建产物数据做检测的能力 | [产物预警](../usage/bundle-alerts) |
33
+ | 产物分析 | 产物中 assets、chunks、modules 关系分析,以及每个 module 打包代码及大小分析等 | [产物分析](../usage/bundle-size) |
34
+ | 模块分析 | Modules 依赖关系分析 | [Modules 依赖链分析](../usage/module-analysis) |
35
+ | 重复包优化 | 检查项目使用的依赖包的重复情况 | [重复包优化](../../blog/topic/duplicate-pkg-problem) |
36
+ | Bundle Diff | 两份产物对比分析 | 计划支持 |
@@ -0,0 +1,116 @@
1
+ # 介绍
2
+
3
+ ## 💡 什么是 Rsdoctor?
4
+
5
+ - Rsdoctor 是一个面向构建过程与构建产物提供诊断和分析的一站式工具。
6
+ - Rsdoctor 是一个支持 Webpack 及 Rspack 构建分析工具。
7
+ - Rsdoctor 是一个可以展示编译耗时及编译行为细节的分析工具。
8
+ - Rsdoctor 是一个提供 Bundle Diff 等防劣化能力的工具。
9
+
10
+ ## 🔥 特性
11
+
12
+ - **编译可视化**:Rsdoctor 将编译行为及耗时进行可视化展示,方便开发同学查看构建问题。
13
+ - **多种分析能力**:支持构建产物、构建时分析能力:
14
+ - 构建产物支持资源列表及模块依赖等。
15
+ - 构建时分析支持 Loader、Plugin、Resolver 构建过程分析。
16
+ - 支持 Rspack 的 builtin:swc-loader 分析。
17
+ - 构建规则支持重复包检测及 ES Version Check 检查等。
18
+ - **支持自定义规则**:除了内置构建扫描规则外,还支持用户根据 Rsdoctor 的构建数据添加自定义构建扫描规则。
19
+ - **框架无关**:支持所有基于 Webpack 或 Rspack 构建的项目。
20
+
21
+ ## 🛠️ 功能介绍
22
+
23
+ ### ⭐️ 概览
24
+
25
+ - 概览页(即首页)能够知道**项目配置、诊断信息、编译信息、产物情况**。
26
+
27
+ ![Overall](https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/overall.jpg)
28
+
29
+ - 除了有项目概览之外,我们还提供了诊断模块,分别是编译诊断、重复包诊断等。如果你的编译、产物命中了我们定义的诊断规则,就会在工具首页出现对应的警示模块, **其中重复包可以查看到详细的引用路径**:
30
+
31
+ ![Overall-Alerts](https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/overall-alerts.jpg)
32
+
33
+ ### ⭐️ 编译分析
34
+
35
+ 面向 **Loaders、Plugins、Module Resolve** 提供了对应的数据与分析功能,来帮助你分析编译过程上的问题。
36
+
37
+ #### Loader 分析
38
+
39
+ - 该模块主要提供了 **Rspack 或 Webpack 的 Loaders** 内的输入输出、预估耗时、参数等数据分析的功能。
40
+
41
+ <div style={{ display: 'flex' }}>
42
+ <img
43
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/compile/loader-timeline-overall.png"
44
+ width="55%"
45
+ style={{ margin: 'auto' }}
46
+ />
47
+ <img
48
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/compile/loader-anlaysis-all.png"
49
+ width="45%"
50
+ style={{ margin: 'auto' }}
51
+ />
52
+ </div>
53
+
54
+ #### Plugin 分析
55
+
56
+ - 该模块主要拦截并收集了 Plugins 的调用次数、预估耗时等数据信息。
57
+
58
+ <p>
59
+ <img
60
+ alt="bundle"
61
+ src={
62
+ 'https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/compile-plugin.jpg'
63
+ }
64
+ width="600px"
65
+ style={{ margin: 'auto' }}
66
+ />
67
+ </p>
68
+
69
+ #### Resolve 分析
70
+
71
+ - 该模块主要提供了项目内部单个文件中模块解析的路径数据以及预估耗时。Rspack 暂时未支持该模块。
72
+
73
+ <p>
74
+ <img
75
+ alt="bundle"
76
+ src={
77
+ 'https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/resolver.jpeg'
78
+ }
79
+ width="700px"
80
+ style={{ margin: 'auto' }}
81
+ />
82
+ </p>
83
+
84
+ ### ⭐️ 产物分析
85
+
86
+ - 我们在「Bundle Size」模块中,可以看到当前项目的产物数据信息概览,以及分析重复包引入的体积与原因。
87
+
88
+ - 此外,我们还可以通过「Bundle Analysis」 模块来进一步分析当前产物中产物与模块关系,体积数据等信息以及模块引入的原因。
89
+
90
+ <p>
91
+ <img
92
+ alt="bundle"
93
+ src={
94
+ 'https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/bundle-size.jpg'
95
+ }
96
+ width="700px"
97
+ style={{ margin: 'auto' }}
98
+ />
99
+ </p>
100
+
101
+ ### ⭐️ Bundle Diff
102
+
103
+ ::: tip
104
+ 功能支持中...
105
+ :::
106
+
107
+ 使用 Rsdoctor 提供的 Bundle Diff 功能,可以看到产物内的资源体积、重复包、Packages 等数据的变化以及每个资源中的模块文件的大小及代码的变化。
108
+
109
+ | ![bundle-diff-1](https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/bundle-diff-2.png) | ![bundle-diff-2](https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/start/bundle-diff-1.png) |
110
+ | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
111
+
112
+ ## 🧑‍💻 社区
113
+
114
+ 欢迎加入我们的 [Discord](https://discord.gg/wrBPBT6rkM) 交流频道!Rsdoctor 团队和用户都在那里活跃,并且我们一直期待着各种贡献。
115
+
116
+ 你也可以加入 [飞书群](https://applink.feishu.cn/client/chat/chatter/add_by_link?link_token=3c3vca77-bfc0-4ef5-b62b-9c5c9c92f1b4) 与大家一起交流。
@@ -0,0 +1,183 @@
1
+ ## 第二步:注册插件
2
+
3
+ 依赖安装完成后,你需要在项目中接入 Rsdoctor 插件,下面是一些常见工具和框架的示例:
4
+
5
+ ### Rspack 项目
6
+
7
+ 在 `rspack.config.js` 的 [plugins](https://www.rspack.dev/config/plugins.html#plugins) 中初始化 RsdoctorRspackPlugin 插件,参考:
8
+
9
+ ```js title="rspack.config.js"
10
+ const { RsdoctorRspackPlugin } = require('@rsdoctor/rspack-plugin');
11
+
12
+ module.exports = {
13
+ // ...
14
+ plugins: [
15
+ // 仅在 RSDOCTOR 为 true 时注册插件,因为插件会增加构建耗时
16
+ process.env.RSDOCTOR &&
17
+ new RsdoctorRspackPlugin({
18
+ // 插件选项
19
+ }),
20
+ ].filter(Boolean),
21
+ };
22
+ ```
23
+
24
+ - **Options:** 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
25
+
26
+ ### Rsbuild 项目
27
+
28
+ 在 `rsbuild.config.ts` 的 [tools.rspack](https://rsbuild.dev/config/tools/rspack) 中初始化 RsdoctorWebpackPlugin 插件,参考:
29
+
30
+ ```js title="rsbuild.config.ts"
31
+ import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';
32
+
33
+ export default {
34
+ // ...
35
+ tools: {
36
+ rspack(config, { appendPlugins }) {
37
+ // 仅在 RSDOCTOR 为 true 时注册插件,因为插件会增加构建耗时
38
+ if (process.env.RSDOCTOR) {
39
+ appendPlugins(
40
+ new RsdoctorRspackPlugin({
41
+ // 插件选项
42
+ }),
43
+ );
44
+ }
45
+ },
46
+ },
47
+ };
48
+ ```
49
+
50
+ - **Options:** 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
51
+
52
+ ### Webpack 项目
53
+
54
+ 在 `webpack.config.js` 的 [plugins](https://webpack.js.org/configuration/plugins/#plugins) 中初始化 RsdoctorWebpackPlugin 插件,参考:
55
+
56
+ ```js title="webpack.config.js"
57
+ const { RsdoctorWebpackPlugin } = require('@rsdoctor/webpack-plugin');
58
+
59
+ module.exports = {
60
+ // ...
61
+ plugins: [
62
+ // 仅在 RSDOCTOR 为 true 时注册插件,因为插件会增加构建耗时
63
+ process.env.RSDOCTOR &&
64
+ new RsdoctorWebpackPlugin({
65
+ // 插件选项
66
+ }),
67
+ ].filter(Boolean),
68
+ };
69
+ ```
70
+
71
+ - **Options:** 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
72
+
73
+ ### Modern.js 项目
74
+
75
+ 在 `modern.config.ts` 的 [tools.bundlerChain](https://modernjs.dev/configure/app/tools/rspack) 中初始化插件,参考:
76
+
77
+ ```ts title="modern.config.ts"
78
+ import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';
79
+
80
+ export default {
81
+ // ...
82
+ tools: {
83
+ rspack(config, { appendPlugins }) {
84
+ // 仅在 RSDOCTOR 为 true 时注册插件,因为插件会增加构建耗时
85
+ if (process.env.RSDOCTOR) {
86
+ appendPlugins(
87
+ new RsdoctorRspackPlugin({
88
+ // 插件选项
89
+ }),
90
+ );
91
+ }
92
+ },
93
+ },
94
+ };
95
+ ```
96
+
97
+ - **Options:** 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
98
+
99
+ :::tip
100
+ 对于使用 Modern.js Webpack 模式的项目,请使用 [tools.webpack](https://modernjs.dev/configure/app/tools/webpack) 注册 `RsdoctorWebpackPlugin` 插件。
101
+ :::
102
+
103
+ ### Next.js 项目
104
+
105
+ 在 `next.config.js` 的 [Webpack Config](https://nextjs.org/docs/app/api-reference/next-config-js/webpack) 中初始化 RsdoctorWebpackPlugin 插件。
106
+
107
+ ```ts title="next.config.mjs"
108
+ import { RsdoctorWebpackPlugin } from '@rsdoctor/webpack-plugin';
109
+
110
+ export default {
111
+ // ...
112
+ webpack: (config, { isServer }) => {
113
+ config.plugins.push(
114
+ new RsdoctorWebpackPlugin({
115
+ // 插件选项
116
+ }),
117
+ );
118
+ return config;
119
+ },
120
+ };
121
+ ```
122
+
123
+ - **Options:** 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
124
+
125
+ #### 📢 Next.js 项目使用注意
126
+
127
+ 1. Next.js 项目报告页面问题
128
+
129
+ 详情查看:[FAQ](../more/faq#nextjs)
130
+
131
+ 2. Next.js 中不支持对 rules 进行重写的 Loader 分析
132
+
133
+ 详情查看:[FAQ](../more/faq#nextjs)
134
+
135
+ ### Vue 项目
136
+
137
+ 在配置文件中初始化 `@rsdoctor/webpack-plugin` 或 `@rsdoctor/rspack-plugin` 插件,以下是使用 rsbuild 项目作为示例:
138
+
139
+ ```ts title="rsbuild.config.ts"
140
+ import { defineConfig } from '@rsbuild/core';
141
+ import { pluginVue } from '@rsbuild/plugin-vue';
142
+ import { RsdoctorRspackPlugin } from '@rsdoctor/rspack-plugin';
143
+
144
+ export default defineConfig({
145
+ plugins: [pluginVue()],
146
+ performance: {
147
+ buildCache: false,
148
+ },
149
+ tools: {
150
+ bundlerChain: (chain, { CHAIN_ID }) => {
151
+ chain.plugin('Rsdoctor').use(RsdoctorRspackPlugin, [
152
+ {
153
+ // 插件选项
154
+ },
155
+ ]);
156
+ },
157
+ },
158
+ });
159
+ ```
160
+
161
+ - **Options:** 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
162
+
163
+ #### 📢 Vue 项目使用注意
164
+
165
+ 由于目前不支持对 `vue-loader` 进行分析,对于 Vue 项目,默认情况下禁用了 loader 分析。但是,仍然可以进行插件和构建产物的分析。
166
+
167
+ ---
168
+
169
+ ## 第三步:执行构建
170
+
171
+ 现在你可以在项目内执行 **build** 命令,在完成构建后,Rsdoctor 会自动打开本次构建的分析页面。
172
+
173
+ ```bash
174
+ # 开启 Rsdoctor
175
+ RSDOCTOR=true npm run build
176
+
177
+ # 未开启 Rsdoctor
178
+ npm run build
179
+ ```
180
+
181
+ :::tip
182
+ Rsdoctor 插件提供了一些配置项,请参考 [Options](../../config/options/options)。
183
+ :::
@@ -0,0 +1,29 @@
1
+ # 快速开始
2
+
3
+ 本文档将介绍如何接入 Rsdoctor 能力。
4
+
5
+ ## 第一步:安装依赖
6
+
7
+ import { PackageManagerTabs } from '@theme';
8
+
9
+ ### Rspack 项目
10
+
11
+ 基于 Rspack 或 Rsbuild 的项目,安装以下依赖:
12
+
13
+ <PackageManagerTabs command="add @rsdoctor/rspack-plugin -D" />
14
+
15
+ ### Webpack 项目
16
+
17
+ :::tip
18
+ 不支持 Webpack 4 项目。
19
+ :::
20
+
21
+ 基于 Webpack 的项目,安装以下依赖:
22
+
23
+ <PackageManagerTabs command="add @rsdoctor/webpack-plugin -D" />
24
+
25
+ ---
26
+
27
+ import QuickStartShared from './quick-start-shared.mdx';
28
+
29
+ <QuickStartShared />
@@ -0,0 +1,14 @@
1
+ [
2
+ "project-overall",
3
+ "bundle-overall",
4
+ "compile-overall",
5
+ "compile-alerts",
6
+ "bundle-alerts",
7
+ "loaders-timeline",
8
+ "loaders-analysis",
9
+ "plugins-analysis",
10
+ "bundle-size",
11
+ "module-analysis",
12
+ "resolver",
13
+ "rule-config"
14
+ ]
@@ -0,0 +1,49 @@
1
+ # 产物预警
2
+
3
+ ## 功能介绍
4
+
5
+ ### 重复第三方包
6
+
7
+ - `Duplicate Packages` 卡片上展示了项目重复第三方包数目。点击图片可以查看重复第三方包的具体详情。注:这里的第三方都是被打包的第三方包。
8
+
9
+ <div style={{ display: 'flex' }}>
10
+ <img
11
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/bundle/bundle-alters-1.png"
12
+ height="200px"
13
+ width="360px"
14
+ style={{ margin: 'auto' }}
15
+ />
16
+ <img
17
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/bundle/bundle-alters-2.png"
18
+ height="300px"
19
+ width="440px"
20
+ style={{ margin: 'auto' }}
21
+ />
22
+ </div>
23
+
24
+ - 重复包预警卡片
25
+
26
+ <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/bundle/bundle-alerts.png" />
27
+
28
+ - 点击图标展开重复包详情,可以看到:重复包的包名、版本、大小、引用文件。
29
+
30
+ - 点击最右侧 **「Show Relations」** 可以查看具体这个第三方的引用链路和对应的引用文件代码位置。
31
+
32
+ <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/bundle/bundle-alters-relations.png" />
33
+
34
+ - 点击最右侧 **「!(叹号)」** 图标,可以查看重复第三方包的规则的具体解释。
35
+
36
+ <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/bundle/bundle-alters-rule.png" />
37
+
38
+ ### 重复包优化问题
39
+
40
+ 请查看[重复包优化方案](../../blog/topic/duplicate-pkg-problem)。
41
+
42
+ ### ECMA 版本检查
43
+
44
+ 产物预警中会对产物进行 ECMA 版本做检查,如下图:
45
+
46
+ {' '}
47
+ <img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/bundle/bundle-alerts-ecma.png" />
48
+
49
+ 点击 「**More**」可以查看对应规则解释。
@@ -0,0 +1,57 @@
1
+ # 产物概览
2
+
3
+ ## 功能概览
4
+
5
+ 我们在启动 **Rsdoctor** 的首页中,会看到名为 `Bundle Overall` 的一个卡片,可以通过它了解到当前项目**构建产物**的信息,其内容如下图所示:
6
+
7
+ <img
8
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/overall/bundle-overall-1.jpg"
9
+ width="400px"
10
+ height="500px"
11
+ style={{ margin: 'auto' }}
12
+ />
13
+
14
+ ## 名词释义
15
+
16
+ | 名词 | 描述说明 |
17
+ | -------------------------------- | ---------------------------------------------------------------------------------- |
18
+ | <b><i>total files</i></b> | 代表产物中所有文件的数量 |
19
+ | <b><i>total size</i></b> | 代表产物中所有文件的总体积 |
20
+ | <b><i>js files</i></b> | 代表产物中所有 `.js` 的文件数量 |
21
+ | <b><i>css files</i></b> | 代表产物中所有 `.css` 文件数量 |
22
+ | <b><i>image files</i></b> | 代表产物中所有 `.png`/`.jpg`/`.svg`/`.webp`/`.jpeg`/`.gif`/`.bmp` 的文件数量 |
23
+ | <b><i>font files</i></b> | 代表产物中所有 `.ttf`/`.fnt`/`.fon`/`.otf`/`.woff`/`.woff2` 的文件数量 |
24
+ | <b><i>media files</i></b> | 代表产物中所有 `.mp3`/`.mp4`/`.avi`/`.wav`/`.flv`/`.mov`/`.mpg`/`.mpeg` 的文件数量 |
25
+ | <b><i>html files</i></b> | 代表产物中所有 `.html` 的文件数量 |
26
+ | <b><i>modules</i></b> | 代表产物中 module 总数 |
27
+ | <b><i>duplicate packages</i></b> | 代表产物中存在的重复包总数 |
28
+
29
+ ## 使用说明
30
+
31
+ ### View Bundle Artifacts
32
+
33
+ - 卡片上的 **「TOTAL Size」** 数据是项目的总大小。点击该数字可以跳转到 [Bundle Size 页面](./bundle-size.mdx)
34
+
35
+ - 卡片上还可以查看到不同类型文件的个数及总 Size,点击对应的蓝色图标则可以查看到对应的文件列表,如下图:
36
+ - **Initial:** 是指该资源是入口的主 Chunk。
37
+
38
+ <img
39
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/overall/bundle-overall-files.png"
40
+ width="400px"
41
+ height="600px"
42
+ style={{ margin: 'auto' }}
43
+ />
44
+
45
+ ### [Duplicate Packages](../../blog/topic/duplicate-pkg-problem.mdx)
46
+
47
+ 如果卡片中的 `Duplicate Packages` 显示的数字大于 0,则可以**点击来查看对应的重复包详情列表**,其内容如下图所示:
48
+
49
+ <img
50
+ src="https://lf3-static.bytednsdoc.com/obj/eden-cn/lognuvj/rsdoctor/docs/usage/overall/bundle-overall-dup-pkg.jpg"
51
+ width="600px"
52
+ style={{ margin: 'auto' }}
53
+ />
54
+
55
+ 我们可以看到当前 Rsdoctor 在本次构建产物中检测出来的所有重复包的列表。
56
+
57
+ 更多请查看[重复第三方包](/guide/usage/bundle-alerts)。