@modern-js/module-tools-docs 2.0.0-beta.4 → 2.0.1

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 (198) hide show
  1. package/.eslintrc.js +13 -0
  2. package/docs/en/api/config/_category_.json +4 -0
  3. package/docs/en/api/{build-config.md → config/build-config.md} +198 -105
  4. package/docs/en/api/{build-preset.md → config/build-preset.md} +65 -46
  5. package/docs/{zh/api → en/api/config}/design-system.md +130 -127
  6. package/docs/en/api/config/plugins.md +18 -0
  7. package/docs/en/api/{test.md → config/testing.md} +21 -12
  8. package/docs/en/api/index.md +3 -1
  9. package/docs/en/api/plugin-api/_category_.json +4 -0
  10. package/docs/en/api/plugin-api/plugin-hooks.md +501 -0
  11. package/docs/en/guide/advance/_category_.json +4 -0
  12. package/docs/en/guide/advance/asset.mdx +47 -30
  13. package/docs/en/guide/advance/build-umd.mdx +88 -80
  14. package/docs/en/guide/advance/copy.md +31 -28
  15. package/docs/en/guide/advance/external-dependency.mdx +27 -23
  16. package/docs/en/guide/advance/in-depth-about-build.md +56 -50
  17. package/docs/en/guide/advance/in-depth-about-dev-command.md +7 -4
  18. package/docs/en/guide/advance/theme-config.mdx +80 -0
  19. package/docs/en/guide/basic/_category_.json +4 -0
  20. package/docs/en/guide/basic/before-getting-started.md +28 -23
  21. package/docs/en/guide/basic/command-preview.md +18 -14
  22. package/docs/en/guide/basic/modify-output-product.md +27 -20
  23. package/docs/en/guide/basic/publish-your-project.md +21 -19
  24. package/docs/en/guide/basic/test-your-project.mdx +19 -16
  25. package/docs/en/guide/basic/use-micro-generator.md +10 -7
  26. package/docs/en/guide/basic/using-storybook.mdx +27 -26
  27. package/docs/en/guide/best-practices/_category_.json +4 -0
  28. package/docs/en/guide/best-practices/components.mdx +783 -0
  29. package/docs/en/guide/intro/_category_.json +4 -0
  30. package/docs/en/guide/intro/getting-started.md +9 -4
  31. package/docs/en/guide/intro/welcome.md +4 -0
  32. package/docs/en/guide/intro/why-module-engineering-solution.md +5 -1
  33. package/docs/en/index.md +3 -5
  34. package/docs/en/plugins/guide/_category_.json +4 -0
  35. package/docs/en/plugins/guide/getting-started.mdx +84 -0
  36. package/docs/en/plugins/guide/plugin-object.mdx +85 -0
  37. package/docs/en/plugins/guide/setup-function.mdx +117 -0
  38. package/docs/en/plugins/official-list/_category_.json +4 -0
  39. package/docs/en/plugins/official-list/overview.md +6 -0
  40. package/docs/zh/api/config/_category_.json +4 -0
  41. package/docs/zh/api/config/build-config.md +658 -0
  42. package/docs/zh/api/{build-preset.md → config/build-preset.md} +49 -36
  43. package/docs/zh/api/config/design-system.md +1166 -0
  44. package/docs/zh/api/config/plugins.md +18 -0
  45. package/docs/zh/api/{testing.md → config/testing.md} +18 -13
  46. package/docs/zh/api/index.md +4 -1
  47. package/docs/zh/api/plugin-api/_category_.json +4 -0
  48. package/docs/zh/api/plugin-api/plugin-hooks.md +500 -0
  49. package/docs/zh/guide/advance/_category_.json +4 -0
  50. package/docs/zh/guide/advance/asset.mdx +47 -30
  51. package/docs/zh/guide/advance/build-umd.mdx +88 -71
  52. package/docs/zh/guide/advance/copy.md +31 -28
  53. package/docs/zh/guide/advance/external-dependency.mdx +27 -23
  54. package/docs/zh/guide/advance/in-depth-about-build.md +55 -50
  55. package/docs/zh/guide/advance/in-depth-about-dev-command.md +7 -4
  56. package/docs/zh/guide/advance/theme-config.mdx +78 -0
  57. package/docs/zh/guide/basic/_category_.json +4 -0
  58. package/docs/zh/guide/basic/before-getting-started.md +27 -22
  59. package/docs/zh/guide/basic/command-preview.md +17 -13
  60. package/docs/zh/guide/basic/modify-output-product.md +28 -21
  61. package/docs/zh/guide/basic/publish-your-project.md +22 -17
  62. package/docs/zh/guide/basic/test-your-project.mdx +20 -16
  63. package/docs/zh/guide/basic/use-micro-generator.md +10 -7
  64. package/docs/zh/guide/basic/using-storybook.mdx +27 -24
  65. package/docs/zh/guide/best-practices/_category_.json +4 -0
  66. package/docs/zh/guide/best-practices/components.mdx +793 -0
  67. package/docs/zh/guide/intro/_category_.json +4 -0
  68. package/docs/zh/guide/intro/getting-started.md +10 -4
  69. package/docs/zh/guide/intro/welcome.md +4 -0
  70. package/docs/zh/guide/intro/why-module-engineering-solution.md +5 -1
  71. package/docs/zh/index.md +3 -2
  72. package/docs/zh/plugins/guide/_category_.json +4 -0
  73. package/docs/zh/plugins/guide/getting-started.mdx +84 -0
  74. package/docs/zh/plugins/guide/plugin-object.mdx +85 -0
  75. package/docs/zh/plugins/guide/setup-function.mdx +117 -0
  76. package/docs/zh/plugins/official-list/_category_.json +4 -0
  77. package/docs/zh/plugins/official-list/overview.md +5 -0
  78. package/modern.config.ts +118 -0
  79. package/package.json +8 -6
  80. package/{docs/.island/styles → theme}/index.css +0 -1
  81. package/theme/index.ts +4 -0
  82. package/tsconfig.json +7 -0
  83. package/docs/.island/config.ts +0 -245
  84. package/docs/.island/dist/404.html +0 -41
  85. package/docs/.island/dist/assets/before-getting-started.1b82b538.js +0 -87
  86. package/docs/.island/dist/assets/before-getting-started.582a31cc.js +0 -87
  87. package/docs/.island/dist/assets/build-config.72eb0918.js +0 -804
  88. package/docs/.island/dist/assets/build-config.d8bb1658.js +0 -809
  89. package/docs/.island/dist/assets/build-preset.96805d7d.js +0 -256
  90. package/docs/.island/dist/assets/build-preset.c20dcd40.js +0 -256
  91. package/docs/.island/dist/assets/build-your-ui.7f349247.js +0 -2
  92. package/docs/.island/dist/assets/build-your-ui.a8361604.js +0 -2
  93. package/docs/.island/dist/assets/command-preview.2d45fc82.js +0 -264
  94. package/docs/.island/dist/assets/command-preview.dc51b953.js +0 -264
  95. package/docs/.island/dist/assets/components.esm.03560353.js +0 -9
  96. package/docs/.island/dist/assets/design-system.86694ff5.js +0 -1254
  97. package/docs/.island/dist/assets/design-system.c4745cce.js +0 -639
  98. package/docs/.island/dist/assets/dev.1d326a37.js +0 -37
  99. package/docs/.island/dist/assets/dev.1fd06000.js +0 -37
  100. package/docs/.island/dist/assets/down.f35427d3.svg +0 -1
  101. package/docs/.island/dist/assets/extension.12299fd6.js +0 -2
  102. package/docs/.island/dist/assets/extension.96dc63a4.js +0 -2
  103. package/docs/.island/dist/assets/getting-started.40e9218d.js +0 -117
  104. package/docs/.island/dist/assets/getting-started.b1ed3f10.js +0 -114
  105. package/docs/.island/dist/assets/github.3bf8ccee.svg +0 -1
  106. package/docs/.island/dist/assets/index.2b2347ea.js +0 -33
  107. package/docs/.island/dist/assets/index.6cef6f5f.js +0 -4
  108. package/docs/.island/dist/assets/index.cb118238.js +0 -36
  109. package/docs/.island/dist/assets/index.ccb6ce27.js +0 -4
  110. package/docs/.island/dist/assets/island_inject.11a12ecc.js +0 -1
  111. package/docs/.island/dist/assets/island_inject.b13deaee.js +0 -1
  112. package/docs/.island/dist/assets/loading.8c9bb911.svg +0 -1
  113. package/docs/.island/dist/assets/modify-output-product.7f6bff35.js +0 -100
  114. package/docs/.island/dist/assets/modify-output-product.b91eff1f.js +0 -100
  115. package/docs/.island/dist/assets/moon.6b705924.svg +0 -3
  116. package/docs/.island/dist/assets/plugin.895932d8.js +0 -42
  117. package/docs/.island/dist/assets/plugin.d2fbc531.js +0 -42
  118. package/docs/.island/dist/assets/publish-your-project.21b8309f.js +0 -164
  119. package/docs/.island/dist/assets/publish-your-project.8d398b17.js +0 -166
  120. package/docs/.island/dist/assets/right.89674cd7.svg +0 -1
  121. package/docs/.island/dist/assets/search.0aea6901.svg +0 -1
  122. package/docs/.island/dist/assets/search.1c85d17c.js +0 -3
  123. package/docs/.island/dist/assets/search.484eca11.js +0 -222
  124. package/docs/.island/dist/assets/search.54fca8d0.js +0 -3
  125. package/docs/.island/dist/assets/style.09015a4b.css +0 -1
  126. package/docs/.island/dist/assets/style.2e5f7bc2.css +0 -1970
  127. package/docs/.island/dist/assets/sun.841dac10.svg +0 -11
  128. package/docs/.island/dist/assets/test-your-project.18bd4582.js +0 -190
  129. package/docs/.island/dist/assets/test-your-project.f53bebf7.js +0 -190
  130. package/docs/.island/dist/assets/test.0da1f99f.js +0 -67
  131. package/docs/.island/dist/assets/test.0e81f002.js +0 -66
  132. package/docs/.island/dist/assets/translator.b1077c44.svg +0 -1
  133. package/docs/.island/dist/assets/use-micro-generator.7d9e4016.js +0 -60
  134. package/docs/.island/dist/assets/use-micro-generator.db5520c1.js +0 -60
  135. package/docs/.island/dist/assets/using-storybook.57ea6b77.js +0 -260
  136. package/docs/.island/dist/assets/using-storybook.a2212f2e.js +0 -260
  137. package/docs/.island/dist/assets/welcome.0449a9c8.js +0 -13
  138. package/docs/.island/dist/assets/welcome.a8448931.js +0 -13
  139. package/docs/.island/dist/assets/why-module-engineering-solution.6ae8c0e3.js +0 -26
  140. package/docs/.island/dist/assets/why-module-engineering-solution.c9a45cbd.js +0 -26
  141. package/docs/.island/dist/chunk-COLCRJ2V.js +0 -1
  142. package/docs/.island/dist/chunk-K5FMOYDC.js +0 -10
  143. package/docs/.island/dist/chunk-WE42KMYS.js +0 -26
  144. package/docs/.island/dist/client-entry.js +0 -3
  145. package/docs/.island/dist/en/api/build-config.html +0 -344
  146. package/docs/.island/dist/en/api/build-preset.html +0 -82
  147. package/docs/.island/dist/en/api/design-system.html +0 -155
  148. package/docs/.island/dist/en/api/dev.html +0 -45
  149. package/docs/.island/dist/en/api/index.html +0 -41
  150. package/docs/.island/dist/en/api/plugin.html +0 -48
  151. package/docs/.island/dist/en/api/test.html +0 -58
  152. package/docs/.island/dist/en/guide/before-getting-started.html +0 -127
  153. package/docs/.island/dist/en/guide/build-your-ui.html +0 -41
  154. package/docs/.island/dist/en/guide/command-preview.html +0 -100
  155. package/docs/.island/dist/en/guide/extension.html +0 -41
  156. package/docs/.island/dist/en/guide/getting-started.html +0 -76
  157. package/docs/.island/dist/en/guide/modify-output-product.html +0 -140
  158. package/docs/.island/dist/en/guide/publish-your-project.html +0 -91
  159. package/docs/.island/dist/en/guide/test-your-project.html +0 -72
  160. package/docs/.island/dist/en/guide/use-micro-generator.html +0 -65
  161. package/docs/.island/dist/en/guide/using-storybook.html +0 -113
  162. package/docs/.island/dist/en/guide/welcome.html +0 -53
  163. package/docs/.island/dist/en/guide/why-module-engineering-solution.html +0 -49
  164. package/docs/.island/dist/en/index.html +0 -42
  165. package/docs/.island/dist/react-dom.js +0 -1
  166. package/docs/.island/dist/react-dom_client.js +0 -1
  167. package/docs/.island/dist/react.js +0 -1
  168. package/docs/.island/dist/react_jsx-runtime.js +0 -10
  169. package/docs/.island/dist/ssr-manifest.json +0 -57
  170. package/docs/.island/dist/test-result.png +0 -0
  171. package/docs/.island/dist/why-module-solution.png +0 -0
  172. package/docs/.island/dist/zh/api/build-config.html +0 -347
  173. package/docs/.island/dist/zh/api/build-preset.html +0 -82
  174. package/docs/.island/dist/zh/api/design-system.html +0 -149
  175. package/docs/.island/dist/zh/api/dev.html +0 -46
  176. package/docs/.island/dist/zh/api/index.html +0 -41
  177. package/docs/.island/dist/zh/api/plugin.html +0 -48
  178. package/docs/.island/dist/zh/api/test.html +0 -59
  179. package/docs/.island/dist/zh/guide/before-getting-started.html +0 -127
  180. package/docs/.island/dist/zh/guide/build-your-ui.html +0 -41
  181. package/docs/.island/dist/zh/guide/command-preview.html +0 -100
  182. package/docs/.island/dist/zh/guide/extension.html +0 -41
  183. package/docs/.island/dist/zh/guide/getting-started.html +0 -79
  184. package/docs/.island/dist/zh/guide/modify-output-product.html +0 -140
  185. package/docs/.island/dist/zh/guide/publish-your-project.html +0 -92
  186. package/docs/.island/dist/zh/guide/test-your-project.html +0 -72
  187. package/docs/.island/dist/zh/guide/use-micro-generator.html +0 -65
  188. package/docs/.island/dist/zh/guide/using-storybook.html +0 -114
  189. package/docs/.island/dist/zh/guide/welcome.html +0 -53
  190. package/docs/.island/dist/zh/guide/why-module-engineering-solution.html +0 -49
  191. package/docs/.island/dist/zh/index.html +0 -42
  192. package/docs/.island/index.html +0 -39
  193. package/docs/en/api/design-system.md +0 -524
  194. package/docs/en/api/dev.md +0 -32
  195. package/docs/en/api/plugin.md +0 -34
  196. package/docs/zh/api/build-config.md +0 -570
  197. package/docs/zh/api/dev.md +0 -33
  198. package/docs/zh/api/plugins.md +0 -108
@@ -0,0 +1,18 @@
1
+ ---
2
+ sidebar_position: 4
3
+ ---
4
+
5
+ # Plugins
6
+
7
+ 本章介绍注册 module-tools 插件的配置。
8
+
9
+ - type:`Array<ModuleToolsPlugin>`
10
+
11
+ ```js modern.config.ts
12
+ import { ExamplePlugin } from './plugins/example';
13
+ export default defineConfig({
14
+ plugins: [ExamplePlugin()],
15
+ });
16
+ ```
17
+
18
+ 关于如何编写插件,可以查看[【插件编写指南】](/zh/plugins/guide/getting-started)。
@@ -1,31 +1,36 @@
1
+ ---
2
+ sidebar_position: 5
3
+ ---
4
+
1
5
  # Testing
6
+
2
7
  本章描述了测试相关的配置
3
8
  :::tips
4
9
  需要先通过 `pnpm run new` 启用 单元测试 功能。
5
10
  :::
6
11
 
7
-
8
12
  ## jest
9
- * 类型: `Object | Function`
10
- * 默认值:`{}`
13
+
14
+ - 类型: `Object | Function`
15
+ - 默认值:`{}`
11
16
 
12
17
  对应 [Jest](https://jestjs.io/docs/configuration) 的配置,当为 `Object` 类型时,可以配置 Jest 所支持的所有底层配置 。
13
18
 
14
- ```js title=modern.config.ts
19
+ ```js modern.config.ts
15
20
  import { defineConfig } from '@modern-js/module-tools';
16
21
 
17
22
  export default defineConfig({
18
23
  testing: {
19
24
  jest: {
20
- testTimeout: 10000
21
- }
22
- }
25
+ testTimeout: 10000,
26
+ },
27
+ },
23
28
  });
24
29
  ```
25
30
 
26
31
  值为 `Function` 类型时,默认配置作为第一个参数传入,需要返回新的 Jest 配置对象。
27
32
 
28
- ```js title=modern.config.ts
33
+ ```js modern.config.ts
29
34
  import { defineConfig } from '@modern-js/module-tools';
30
35
 
31
36
  export default defineConfig({
@@ -33,17 +38,17 @@ export default defineConfig({
33
38
  jest: options => {
34
39
  return {
35
40
  ...options,
36
- testTimeout: 10000
37
- }
38
- }
39
- }
41
+ testTimeout: 10000,
42
+ };
43
+ },
44
+ },
40
45
  });
41
46
  ```
42
47
 
43
48
  ## transformer
44
49
 
45
50
  - 类型:`'babel-jest' | 'ts-jest'`
46
- - 默认值:`babel-jest`
51
+ - 默认值:`'babel-jest'`
47
52
 
48
53
  配置执行测试的时候对于源码的编译工具: [babel-jest](https://www.npmjs.com/package/babel-jest) 或 [ts-jest](https://github.com/kulshekhar/ts-jest)。默认使用 `babel-jest`。
49
54
 
@@ -1,3 +1,6 @@
1
1
  ---
2
- pageType: 'api'
2
+ overview: true
3
+ sidebar_label: 概览
3
4
  ---
5
+
6
+ # index
@@ -0,0 +1,4 @@
1
+ {
2
+ "label": "Plugin API",
3
+ "sidebar_position": 2
4
+ }
@@ -0,0 +1,500 @@
1
+ # Plugin Hooks
2
+
3
+ 本章介绍关于 module-tools 支持的生命周期钩子。
4
+
5
+ 目前主要包含两类生命周期钩子:
6
+
7
+ * 构建钩子:仅在执行 `build` 命令构建源码产物时触发。
8
+ * `buildPlatform` 钩子:仅在执行 `build --platform` 命令生成其他构建产物时触发。
9
+ * 调试钩子:运行 `dev` 命令时会触发的钩子。
10
+
11
+ ## 构建钩子
12
+
13
+ 在执行 `build` 命令的时候,会按照顺序触发以下 Hooks:
14
+
15
+ * `beforeBuild`
16
+ * `beforeBuildTask`
17
+ * `afterBuildTask`
18
+ * `afterBuild`
19
+
20
+ ### `beforeBuild`
21
+
22
+ 执行整体构建流程之前触发。
23
+
24
+ ``` ts
25
+ export default (): CliPlugin<ModuleTools> => ({
26
+ name: 'my-plugin',
27
+
28
+ setup() {
29
+ return {
30
+ beforeBuild(options: Options): Return {
31
+ return options.config;
32
+ }
33
+ }
34
+ },
35
+ });
36
+ ```
37
+
38
+ 参数和返回值类型:
39
+
40
+ ``` ts
41
+ type Options = { options: { config: BuildConfig; cliOptions: BuildCommandOptions } };
42
+
43
+ export interface BuildCommandOptions {
44
+ config: string;
45
+ clear?: boolean;
46
+ dts?: boolean;
47
+ platform?: boolean | string[];
48
+ tsconfig: string;
49
+ watch?: boolean;
50
+ }
51
+
52
+ type Return = BuildConfig;
53
+ ```
54
+
55
+ > `BuildConfig` 类型参考 [API 配置](zh/api/)
56
+
57
+ ### `beforeBuildTask`
58
+
59
+ 根据构建配置,module tools 会将整体构建分成多个子构建任务。该 Hook 将会在每一个构建子任务之前触发。
60
+
61
+ ``` ts
62
+ export default (): CliPlugin<ModuleTools> => ({
63
+ name: 'my-plugin',
64
+
65
+ setup() {
66
+ return {
67
+ beforeBuildTask(config: BaseBuildConfig): BaseBuildConfig {
68
+ return config;
69
+ }
70
+ }
71
+ },
72
+ });
73
+ ```
74
+
75
+ 参数和返回值类型:
76
+
77
+ `BaseBuildConfig` 类型参考 [API 配置](zh/api/)。
78
+
79
+ ### `afterBuildTask`
80
+
81
+ 每一个构建子任务结束之后触发。
82
+
83
+ ``` ts
84
+ export default (): CliPlugin<ModuleTools> => ({
85
+ name: 'my-plugin',
86
+
87
+ setup() {
88
+ return {
89
+ afterBuildTask(options: BuildTaskResult): void {
90
+ // ...
91
+ }
92
+ }
93
+ },
94
+ });
95
+ ```
96
+
97
+ 参数和返回值类型:
98
+
99
+ ``` ts
100
+ export interface BuildTaskResult {
101
+ status: 'success' | 'fail';
102
+ message?: string;
103
+ config: BaseBuildConfig;
104
+ }
105
+ ```
106
+
107
+ ### `afterBuild`
108
+
109
+ 整体构建流程结束之后触发。
110
+
111
+ ``` ts
112
+ export default (): CliPlugin<ModuleTools> => ({
113
+ name: 'my-plugin',
114
+
115
+ setup() {
116
+ return {
117
+ afterBuild(options: BuildResult): void {
118
+ // ...
119
+ }
120
+ }
121
+ },
122
+ });
123
+ ```
124
+
125
+ 参数和返回值类型:
126
+
127
+ ``` ts
128
+ export interface BuildResult {
129
+ status: 'success' | 'fail';
130
+ message?: string;
131
+ config: BuildConfig;
132
+ commandOptions: BuildCommandOptions;
133
+ totalDuration: number;
134
+ }
135
+ ```
136
+
137
+ ## buildPlatform 钩子
138
+
139
+ module-tools 还提供了 `build --platform` 命令来执行特定的构建任务。
140
+
141
+ 例如在安装了 Storybook 插件后,就可以执行 `build --platform` 或者 `build --platform storybook` 来执行 Storybook 的构建任务。因为 Storybook 插件基于 buildPlatform Hooks 实现了该功能。
142
+
143
+ 在执行 `build --platform` 后会按照以下顺序触发 Hooks:
144
+
145
+ * `registerBuildPlatform`
146
+ * `beforeBuildPlatform`
147
+ * `buildPlatform`
148
+ * `afterBuildPlatform`
149
+
150
+ ### `registerBuildPlatform`
151
+
152
+ 获取在执行 `build --platform` 命令时候需要运行的任务信息。
153
+
154
+ ``` ts
155
+ export default (): CliPlugin<ModuleTools> => ({
156
+ name: 'my-plugin',
157
+
158
+ setup() {
159
+ return {
160
+ registerBuildPlatform(): RegisterBuildPlatformResult {
161
+ // ...
162
+ return {
163
+ platform: 'stroybook',
164
+ build() {
165
+ // run storybook logic
166
+ },
167
+ };
168
+ },
169
+ };
170
+ },
171
+ });
172
+ ```
173
+
174
+ 入参和返回的参数类型:
175
+
176
+ ``` ts
177
+ export interface RegisterBuildPlatformResult {
178
+ platform: string | string[];
179
+ build: (
180
+ currentPlatform: string, // 当前运行的 platform 构建任务
181
+ context: { isTsProject: boolean },
182
+ ) => void | Promise<void>;
183
+ }
184
+ ```
185
+
186
+ ### `beforeBuildPlatform`
187
+
188
+ 当执行 `build --platform` 命令的时候,会触发所有已注册的构建任务。`beforeBuildPlatform` 会在执行整体的构建任务之前触发。
189
+
190
+ ``` ts
191
+ export default (): CliPlugin<ModuleTools> => ({
192
+ name: 'my-plugin',
193
+
194
+ setup() {
195
+ return {
196
+ beforeBuildPlatform(platforms: RegisterBuildPlatformResult[]): void {
197
+ console.info(`have ${platforms.length} platform tasks`);
198
+ },
199
+ };
200
+ },
201
+ });
202
+ ```
203
+
204
+ 入参和返回的参数类型:
205
+
206
+ ``` ts
207
+ export interface RegisterBuildPlatformResult {
208
+ platform: string | string[];
209
+ build: (
210
+ currentPlatform: string, // 当前运行的 platform 构建任务
211
+ context: { isTsProject: boolean },
212
+ ) => void | Promise<void>;
213
+ }
214
+ ```
215
+
216
+ ### `buildPlatform`
217
+
218
+ 当执行 `build --platform` 命令的时候,会触发所有已注册的构建任务。`buildPlatform` 会在每个构建任务执行之前触发。
219
+
220
+ ``` ts
221
+ export default (): CliPlugin<ModuleTools> => ({
222
+ name: 'my-plugin',
223
+
224
+ setup() {
225
+ return {
226
+ buildPlatform({ platform }: Options): void {
227
+ console.info(`current task is ${platform}`);
228
+ },
229
+ };
230
+ },
231
+ });
232
+ ```
233
+
234
+ 入参和返回的参数类型:
235
+
236
+ ``` ts
237
+ export interface Options {
238
+ platform: string;
239
+ }
240
+ ```
241
+
242
+ ### `afterBuildPlatform`
243
+
244
+ 当执行 `build --platform` 命令的时候,会触发所有已注册的构建任务。`afterBuildPlatform` 会在整体 platform 构建任务结束后触发。
245
+
246
+ ``` ts
247
+ export default (): CliPlugin<ModuleTools> => ({
248
+ name: 'my-plugin',
249
+
250
+ setup() {
251
+ return {
252
+ afterBuildPlatform(result: BuildPlatformResult): void {
253
+ if (result.status === 'success') {
254
+ console.info(`all platform build task success`);
255
+ } else {
256
+ console.error(result.message);
257
+ }
258
+ },
259
+ };
260
+ },
261
+ });
262
+ ```
263
+
264
+ 入参和返回的参数类型:
265
+
266
+ ```ts
267
+ export interface BuildPlatformResult {
268
+ status: 'success' | 'fail';
269
+ message: string | Error | null;
270
+ }
271
+ ```
272
+
273
+
274
+ ## 调试钩子
275
+
276
+ 在执行 `dev` 命令的时候,会按照顺序触发以下 Hooks:
277
+
278
+ - `registerDev`: 在获取调试功能信息的时候触发。
279
+ - `beforeDev`: 开始执行调试整体流程之前触发。
280
+ - `beforeDevMenu`: 出现调试列表/菜单之前触发。
281
+ - `afterDevMenu`: 选择调试列表/菜单选项后触发。
282
+ - `beforeDevTask`: 执行调试任务之前触发。
283
+ - `afterDev`: 执行 dev 整体流程最后触发。
284
+
285
+ ### `registerDev`
286
+
287
+ 注册调试工具相关的数据。主要包含:
288
+
289
+ * 调试工具的名称
290
+ * 显示在菜单列表中的项目名称以及对应的值。
291
+ * `dev` 子命令的定义。
292
+ * 是否在运行调试任务之前执行源码构建
293
+ * 执行调试任务的函数。
294
+
295
+ ``` ts
296
+ export default (): CliPlugin<ModuleTools> => ({
297
+ name: 'my-plugin',
298
+
299
+ setup() {
300
+ return {
301
+ registerDev() {
302
+ return {
303
+ // 调试工具名称
304
+ name: 'storybook',
305
+ // 菜单显示内容
306
+ menuItem: {
307
+ name: 'Storybook',
308
+ value: 'storybook',
309
+ },
310
+ // 定义的 dev 子命令
311
+ subCommands: ['storybook', 'story'],
312
+ async action() {
313
+ // dev logic
314
+ },
315
+ };
316
+ },
317
+ };
318
+ },
319
+ });
320
+ ```
321
+
322
+ 入参和返回的参数类型:
323
+
324
+ ``` ts
325
+ export interface DevToolData {
326
+ name: string;
327
+ subCommands?: string[];
328
+ menuItem?: {
329
+ name: string;
330
+ value: string;
331
+ };
332
+ // 在 dev 命令执行之前,是否关闭源码构建
333
+ disableRunBuild?: boolean;
334
+ action: (
335
+ options: { port?: string },
336
+ context: { isTsProject?: boolean },
337
+ ) => void | Promise<void>;
338
+ }
339
+ ```
340
+
341
+ :::tip{title='关于 disableRunBuild 配置'}
342
+ 在调试项目的时候,如果仅需要对代码功能进行调试的话,也许可以设置 `disableRunBuild: true` 来关闭对于源码执行(监听模式下的)构建任务。
343
+
344
+ 目前支持的 Storybook 调试支持将源码产物作为调试对象,因此在 Storybook 插件中 `disableRunBuild: false`。
345
+ :::
346
+
347
+ ### `beforeDev`
348
+
349
+ 在收集完所有调试工具元数据后,执行 dev 任务之前触发。
350
+
351
+ ``` ts
352
+ export default (): CliPlugin<ModuleTools> => ({
353
+ name: 'my-plugin',
354
+
355
+ setup() {
356
+ return {
357
+ beforeDev(metas: DevToolData[]) {
358
+ console.info(`have ${metas.length} dev tools`);
359
+ },
360
+ };
361
+ },
362
+ });
363
+ ```
364
+
365
+ 入参和返回的参数类型:
366
+
367
+ ``` ts
368
+ export interface DevToolData {
369
+ name: string;
370
+ subCommands?: string[];
371
+ menuItem?: {
372
+ name: string;
373
+ value: string;
374
+ };
375
+ // 在 dev 命令执行之前,是否关闭源码构建
376
+ disableRunBuild?: boolean;
377
+ action: (
378
+ options: { port?: string },
379
+ context: { isTsProject?: boolean },
380
+ ) => void | Promise<void>;
381
+ }
382
+ ```
383
+
384
+ ### `(before|after)DevMenu`
385
+
386
+ `beforeDevMenu` 在出现调试列表/菜单之前触发。接收 [inquirer question](https://github.com/SBoudrias/Inquirer.js#question) 作为参数。默认值为:
387
+
388
+ ``` ts
389
+ const question = [
390
+ {
391
+ name: 'choiceDevTool',
392
+ message: '选择调试工具',
393
+ type: 'list',
394
+ // 注册的调试信息
395
+ choices,
396
+ },
397
+ ];
398
+ ```
399
+
400
+ `afterDevMenu` 选择调试列表/菜单选项后触发。
401
+
402
+ ``` ts
403
+ export default (): CliPlugin<ModuleTools> => ({
404
+ name: 'my-plugin',
405
+
406
+ setup() {
407
+ return {
408
+ beforeDevMenu(questions) {
409
+ questions[0].message += '!';
410
+ return questions; // required
411
+ },
412
+ afterDevMenu(options: Options) {
413
+ console.info(`choise ${options.result.choiceDevTool} dev tools`);
414
+ }
415
+ };
416
+ },
417
+ });
418
+ ```
419
+
420
+ 入参和返回的参数类型:
421
+
422
+ ``` ts
423
+ export type { QuestionCollection } from 'inquirer';
424
+
425
+ export interface Options {
426
+ result: PromptResult;
427
+ devTools: DevToolData[];
428
+ }
429
+
430
+ export type PromptResult = { choiceDevTool: string }
431
+ export interface DevToolData {
432
+ name: string;
433
+ subCommands?: string[];
434
+ menuItem?: {
435
+ name: string;
436
+ value: string;
437
+ };
438
+ // 在 dev 命令执行之前,是否关闭源码构建
439
+ disableRunBuild?: boolean;
440
+ action: (
441
+ options: { port?: string },
442
+ context: { isTsProject?: boolean },
443
+ ) => void | Promise<void>;
444
+ }
445
+ ```
446
+
447
+ ### `beforeDevTask`
448
+
449
+ 执行调试任务之前触发。
450
+
451
+ ``` ts
452
+ export default (): CliPlugin<ModuleTools> => ({
453
+ name: 'my-plugin',
454
+
455
+ setup() {
456
+ return {
457
+ beforeDevTask(currentDevData: DevToolData) {
458
+ console.info(`${currentDevData.name} running`);
459
+ },
460
+ };
461
+ },
462
+ });
463
+ ```
464
+
465
+ 入参和返回的参数类型:
466
+
467
+ ``` ts
468
+ export interface DevToolData {
469
+ name: string;
470
+ subCommands?: string[];
471
+ menuItem?: {
472
+ name: string;
473
+ value: string;
474
+ };
475
+ // 在 dev 命令执行之前,是否关闭源码构建
476
+ disableRunBuild?: boolean;
477
+ action: (
478
+ options: { port?: string },
479
+ context: { isTsProject?: boolean },
480
+ ) => void | Promise<void>;
481
+ }
482
+ ```
483
+
484
+ ### `afterDev`
485
+
486
+ 在中断调试任务进程时触发。
487
+
488
+ ``` ts
489
+ export default (): CliPlugin<ModuleTools> => ({
490
+ name: 'my-plugin',
491
+
492
+ setup() {
493
+ return {
494
+ afterDev() {
495
+ console.info(`exit!`);
496
+ },
497
+ };
498
+ },
499
+ });
500
+ ```
@@ -0,0 +1,4 @@
1
+ {
2
+ "label": "进阶指南",
3
+ "sidebar_position": 3
4
+ }