@modern-js/module-tools-docs 2.0.1 → 2.0.2
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.
- package/doc_build/html/main/index.html +16 -0
- package/doc_build/route.json +10 -0
- package/doc_build/static/css/main.css +3370 -0
- package/doc_build/static/css/main.css.map +1 -0
- package/doc_build/static/css/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.css +85 -0
- package/doc_build/static/css/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.css.map +1 -0
- package/doc_build/static/js/async/api_.js +56 -0
- package/doc_build/static/js/async/api_.js.map +1 -0
- package/doc_build/static/js/async/api_config_build-config.js +11309 -0
- package/doc_build/static/js/async/api_config_build-config.js.map +1 -0
- package/doc_build/static/js/async/api_config_build-preset.js +7849 -0
- package/doc_build/static/js/async/api_config_build-preset.js.map +1 -0
- package/doc_build/static/js/async/api_config_design-system.js +48708 -0
- package/doc_build/static/js/async/api_config_design-system.js.map +1 -0
- package/doc_build/static/js/async/api_config_plugins.js +1492 -0
- package/doc_build/static/js/async/api_config_plugins.js.map +1 -0
- package/doc_build/static/js/async/api_config_testing.js +2130 -0
- package/doc_build/static/js/async/api_config_testing.js.map +1 -0
- package/doc_build/static/js/async/api_plugin-api_plugin-hooks.js +14394 -0
- package/doc_build/static/js/async/api_plugin-api_plugin-hooks.js.map +1 -0
- package/doc_build/static/js/async/en_.js +85 -0
- package/doc_build/static/js/async/en_.js.map +1 -0
- package/doc_build/static/js/async/en_api_.js +55 -0
- package/doc_build/static/js/async/en_api_.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_build-config.js +8363 -0
- package/doc_build/static/js/async/en_api_config_build-config.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_build-preset.js +7845 -0
- package/doc_build/static/js/async/en_api_config_build-preset.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_design-system.js +16345 -0
- package/doc_build/static/js/async/en_api_config_design-system.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_plugins.js +1492 -0
- package/doc_build/static/js/async/en_api_config_plugins.js.map +1 -0
- package/doc_build/static/js/async/en_api_config_testing.js +2137 -0
- package/doc_build/static/js/async/en_api_config_testing.js.map +1 -0
- package/doc_build/static/js/async/en_api_plugin-api_plugin-hooks.js +14362 -0
- package/doc_build/static/js/async/en_api_plugin-api_plugin-hooks.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_asset.js +3997 -0
- package/doc_build/static/js/async/en_guide_advance_asset.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_build-umd.js +9861 -0
- package/doc_build/static/js/async/en_guide_advance_build-umd.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_copy.js +6539 -0
- package/doc_build/static/js/async/en_guide_advance_copy.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_external-dependency.js +3810 -0
- package/doc_build/static/js/async/en_guide_advance_external-dependency.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-build.js +5046 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-build.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-dev-command.js +150 -0
- package/doc_build/static/js/async/en_guide_advance_in-depth-about-dev-command.js.map +1 -0
- package/doc_build/static/js/async/en_guide_advance_theme-config.js +2484 -0
- package/doc_build/static/js/async/en_guide_advance_theme-config.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_before-getting-started.js +3671 -0
- package/doc_build/static/js/async/en_guide_basic_before-getting-started.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_command-preview.js +3961 -0
- package/doc_build/static/js/async/en_guide_basic_command-preview.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_modify-output-product.js +2970 -0
- package/doc_build/static/js/async/en_guide_basic_modify-output-product.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_publish-your-project.js +2182 -0
- package/doc_build/static/js/async/en_guide_basic_publish-your-project.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_test-your-project.js +3892 -0
- package/doc_build/static/js/async/en_guide_basic_test-your-project.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_use-micro-generator.js +168 -0
- package/doc_build/static/js/async/en_guide_basic_use-micro-generator.js.map +1 -0
- package/doc_build/static/js/async/en_guide_basic_using-storybook.js +4762 -0
- package/doc_build/static/js/async/en_guide_basic_using-storybook.js.map +1 -0
- package/doc_build/static/js/async/en_guide_best-practices_components.js +21388 -0
- package/doc_build/static/js/async/en_guide_best-practices_components.js.map +1 -0
- package/doc_build/static/js/async/en_guide_intro_getting-started.js +1906 -0
- package/doc_build/static/js/async/en_guide_intro_getting-started.js.map +1 -0
- package/doc_build/static/js/async/en_guide_intro_welcome.js +148 -0
- package/doc_build/static/js/async/en_guide_intro_welcome.js.map +1 -0
- package/doc_build/static/js/async/en_guide_intro_why-module-engineering-solution.js +92 -0
- package/doc_build/static/js/async/en_guide_intro_why-module-engineering-solution.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_guide_getting-started.js +2560 -0
- package/doc_build/static/js/async/en_plugins_guide_getting-started.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_guide_plugin-object.js +4177 -0
- package/doc_build/static/js/async/en_plugins_guide_plugin-object.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_guide_setup-function.js +3819 -0
- package/doc_build/static/js/async/en_plugins_guide_setup-function.js.map +1 -0
- package/doc_build/static/js/async/en_plugins_official-list_overview.js +70 -0
- package/doc_build/static/js/async/en_plugins_official-list_overview.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_asset.js +3997 -0
- package/doc_build/static/js/async/guide_advance_asset.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_build-umd.js +9863 -0
- package/doc_build/static/js/async/guide_advance_build-umd.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_copy.js +6539 -0
- package/doc_build/static/js/async/guide_advance_copy.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_external-dependency.js +3812 -0
- package/doc_build/static/js/async/guide_advance_external-dependency.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-build.js +5046 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-build.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-dev-command.js +152 -0
- package/doc_build/static/js/async/guide_advance_in-depth-about-dev-command.js.map +1 -0
- package/doc_build/static/js/async/guide_advance_theme-config.js +2475 -0
- package/doc_build/static/js/async/guide_advance_theme-config.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_before-getting-started.js +3662 -0
- package/doc_build/static/js/async/guide_basic_before-getting-started.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_command-preview.js +3793 -0
- package/doc_build/static/js/async/guide_basic_command-preview.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_modify-output-product.js +2949 -0
- package/doc_build/static/js/async/guide_basic_modify-output-product.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_publish-your-project.js +2243 -0
- package/doc_build/static/js/async/guide_basic_publish-your-project.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_test-your-project.js +3892 -0
- package/doc_build/static/js/async/guide_basic_test-your-project.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_use-micro-generator.js +172 -0
- package/doc_build/static/js/async/guide_basic_use-micro-generator.js.map +1 -0
- package/doc_build/static/js/async/guide_basic_using-storybook.js +4762 -0
- package/doc_build/static/js/async/guide_basic_using-storybook.js.map +1 -0
- package/doc_build/static/js/async/guide_best-practices_components.js +21088 -0
- package/doc_build/static/js/async/guide_best-practices_components.js.map +1 -0
- package/doc_build/static/js/async/guide_intro_getting-started.js +1782 -0
- package/doc_build/static/js/async/guide_intro_getting-started.js.map +1 -0
- package/doc_build/static/js/async/guide_intro_welcome.js +148 -0
- package/doc_build/static/js/async/guide_intro_welcome.js.map +1 -0
- package/doc_build/static/js/async/guide_intro_why-module-engineering-solution.js +92 -0
- package/doc_build/static/js/async/guide_intro_why-module-engineering-solution.js.map +1 -0
- package/doc_build/static/js/async/index.js +85 -0
- package/doc_build/static/js/async/index.js.map +1 -0
- package/doc_build/static/js/async/packages_cli_doc-core_src_theme-default_components_Search_logic_search_ts.js +447 -0
- package/doc_build/static/js/async/packages_cli_doc-core_src_theme-default_components_Search_logic_search_ts.js.map +1 -0
- package/doc_build/static/js/async/plugins_guide_getting-started.js +2608 -0
- package/doc_build/static/js/async/plugins_guide_getting-started.js.map +1 -0
- package/doc_build/static/js/async/plugins_guide_plugin-object.js +4173 -0
- package/doc_build/static/js/async/plugins_guide_plugin-object.js.map +1 -0
- package/doc_build/static/js/async/plugins_guide_setup-function.js +3819 -0
- package/doc_build/static/js/async/plugins_guide_setup-function.js.map +1 -0
- package/doc_build/static/js/async/plugins_official-list_overview.js +70 -0
- package/doc_build/static/js/async/plugins_official-list_overview.js.map +1 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_code-hike_mdx_0_7_4_react_18_2_0_node_modules_code-hike_mdx_dist_co-06dd41.js +6656 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_code-hike_mdx_0_7_4_react_18_2_0_node_modules_code-hike_mdx_dist_co-06dd41.js.map +1 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_flexsearch_0_6_32_node_modules_flexsearch_dist_flexsearch_min_js.js +54 -0
- package/doc_build/static/js/async/vendors-node_modules_pnpm_flexsearch_0_6_32_node_modules_flexsearch_dist_flexsearch_min_js.js.map +1 -0
- package/doc_build/static/js/builder-runtime.js +1375 -0
- package/doc_build/static/js/builder-runtime.js.map +1 -0
- package/doc_build/static/js/lib-lodash.js +4907 -0
- package/doc_build/static/js/lib-lodash.js.map +1 -0
- package/doc_build/static/js/lib-polyfill.js +24769 -0
- package/doc_build/static/js/lib-polyfill.js.map +1 -0
- package/doc_build/static/js/lib-react.js +39510 -0
- package/doc_build/static/js/lib-react.js.map +1 -0
- package/doc_build/static/js/main.js +9237 -0
- package/doc_build/static/js/main.js.map +1 -0
- package/doc_build/static/js/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.js +8532 -0
- package/doc_build/static/js/vendors-node_modules_pnpm_remix-run_router_1_2_0_node_modules_remix-run_router_dist_router_js-9d5e9c.js.map +1 -0
- package/docs/en/api/config/build-config.md +5 -5
- package/docs/en/api/plugin-api/plugin-hooks.md +1 -1
- package/docs/en/guide/advance/asset.mdx +1 -1
- package/docs/en/guide/advance/build-umd.mdx +3 -3
- package/docs/en/guide/advance/copy.md +5 -5
- package/docs/en/guide/advance/external-dependency.mdx +2 -2
- package/docs/en/guide/advance/in-depth-about-build.md +7 -7
- package/docs/en/guide/advance/in-depth-about-dev-command.md +1 -1
- package/docs/en/guide/advance/theme-config.mdx +2 -2
- package/docs/en/guide/basic/before-getting-started.md +1 -1
- package/docs/en/guide/basic/command-preview.md +2 -2
- package/docs/en/guide/basic/modify-output-product.md +23 -22
- package/docs/en/guide/basic/publish-your-project.md +4 -4
- package/docs/en/guide/basic/test-your-project.mdx +5 -3
- package/docs/en/guide/basic/use-micro-generator.md +9 -5
- package/docs/en/guide/basic/using-storybook.mdx +6 -4
- package/docs/en/guide/best-practices/components.mdx +103 -97
- package/docs/en/guide/intro/getting-started.md +2 -2
- package/docs/en/index.md +14 -17
- package/docs/en/plugins/guide/getting-started.mdx +2 -2
- package/docs/en/plugins/guide/setup-function.mdx +2 -2
- package/docs/zh/api/config/_category_.json +1 -1
- package/docs/zh/api/config/build-config.md +16 -5
- package/docs/zh/api/config/plugins.md +1 -1
- package/docs/zh/api/index.md +1 -0
- package/docs/zh/api/plugin-api/_category_.json +1 -1
- package/docs/zh/api/plugin-api/plugin-hooks.md +56 -55
- package/docs/zh/guide/advance/asset.mdx +1 -1
- package/docs/zh/guide/advance/build-umd.mdx +3 -3
- package/docs/zh/guide/advance/copy.md +5 -5
- package/docs/zh/guide/advance/external-dependency.mdx +3 -3
- package/docs/zh/guide/advance/in-depth-about-build.md +7 -7
- package/docs/zh/guide/advance/in-depth-about-dev-command.md +1 -1
- package/docs/zh/guide/advance/theme-config.mdx +2 -2
- package/docs/zh/guide/basic/before-getting-started.md +1 -1
- package/docs/zh/guide/basic/command-preview.md +2 -2
- package/docs/zh/guide/basic/modify-output-product.md +30 -30
- package/docs/zh/guide/basic/publish-your-project.md +4 -4
- package/docs/zh/guide/basic/test-your-project.mdx +5 -3
- package/docs/zh/guide/basic/use-micro-generator.md +5 -5
- package/docs/zh/guide/basic/using-storybook.mdx +6 -4
- package/docs/zh/guide/best-practices/components.mdx +10 -10
- package/docs/zh/guide/intro/getting-started.md +2 -2
- package/docs/zh/index.md +1 -1
- package/docs/zh/plugins/guide/getting-started.mdx +3 -3
- package/docs/zh/plugins/guide/setup-function.mdx +2 -2
- package/modern.config.ts +4 -3
- package/package.json +3 -3
|
@@ -4,7 +4,7 @@ sidebar_position: 1
|
|
|
4
4
|
|
|
5
5
|
# BuildConfig
|
|
6
6
|
|
|
7
|
-
本章节描述了 Module
|
|
7
|
+
本章节描述了 Module Tools 关于构建的所有配置
|
|
8
8
|
|
|
9
9
|
## alias
|
|
10
10
|
|
|
@@ -12,7 +12,7 @@ sidebar_position: 1
|
|
|
12
12
|
- 默认值:`{'@': 'src',}`
|
|
13
13
|
|
|
14
14
|
:::tip
|
|
15
|
-
对于 TypeScript 项目,只需要在 `tsconfig.json` 中配置 [compilerOptions.paths](https://www.typescriptlang.org/tsconfig#paths), Module
|
|
15
|
+
对于 TypeScript 项目,只需要在 `tsconfig.json` 中配置 [compilerOptions.paths](https://www.typescriptlang.org/tsconfig#paths), Module Tools 会自动识别 `tsconfig.json` 里的别名,因此不需要额外配置 `alias` 字段。
|
|
16
16
|
:::
|
|
17
17
|
|
|
18
18
|
```js modern.config.ts
|
|
@@ -63,7 +63,7 @@ export default defineConfig({
|
|
|
63
63
|
|
|
64
64
|
### path
|
|
65
65
|
|
|
66
|
-
静态资源输出路径,会基于 [outDir](/
|
|
66
|
+
静态资源输出路径,会基于 [outDir](/api/config/build-config#outDir) 进行输出。
|
|
67
67
|
|
|
68
68
|
- 类型: `string`
|
|
69
69
|
- 默认值: `assets`
|
|
@@ -103,6 +103,17 @@ export default defineConfig({
|
|
|
103
103
|
- 类型: `boolean | Object`
|
|
104
104
|
- 默认值: `false`
|
|
105
105
|
|
|
106
|
+
:::tip
|
|
107
|
+
开启svgr后,仍然使用default export导出svg,所以你只能导入默认值。
|
|
108
|
+
```js index.ts
|
|
109
|
+
// true
|
|
110
|
+
import logo from './logo.svg';
|
|
111
|
+
|
|
112
|
+
// false
|
|
113
|
+
import { ReactComponent } from './logo.svg';
|
|
114
|
+
```
|
|
115
|
+
:::
|
|
116
|
+
|
|
106
117
|
#### include
|
|
107
118
|
|
|
108
119
|
设定匹配的 svg 文件
|
|
@@ -236,7 +247,7 @@ TypeScript 配置文件的路径。
|
|
|
236
247
|
|
|
237
248
|
### distPath
|
|
238
249
|
|
|
239
|
-
类型文件的输出路径,基于 [outDir](/
|
|
250
|
+
类型文件的输出路径,基于 [outDir](/api/config/build-config#outDir) 进行输出。
|
|
240
251
|
|
|
241
252
|
- 类型: `string`
|
|
242
253
|
- 默认值: `./types`
|
|
@@ -580,7 +591,7 @@ const tailwind = {
|
|
|
580
591
|
|
|
581
592
|
值为 `Function` 类型时,函数返回的对象与默认配置通过 `Object.assign` 合并。
|
|
582
593
|
|
|
583
|
-
不允许出现 `theme` 属性,否则会构建失败, 使用 [`designSystem`](/
|
|
594
|
+
不允许出现 `theme` 属性,否则会构建失败, 使用 [`designSystem`](/api/config/design-system) 作为 `Tailwind CSS Theme` 配置。
|
|
584
595
|
|
|
585
596
|
其他的使用方式和 Tailwind CSS 一致: [快速传送门](https://tailwindcss.com/docs/configuration)。
|
|
586
597
|
|
package/docs/zh/api/index.md
CHANGED
|
@@ -4,24 +4,24 @@
|
|
|
4
4
|
|
|
5
5
|
目前主要包含两类生命周期钩子:
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
- 构建钩子:仅在执行 `build` 命令构建源码产物时触发。
|
|
8
|
+
- `buildPlatform` 钩子:仅在执行 `build --platform` 命令生成其他构建产物时触发。
|
|
9
|
+
- 调试钩子:运行 `dev` 命令时会触发的钩子。
|
|
10
10
|
|
|
11
11
|
## 构建钩子
|
|
12
12
|
|
|
13
13
|
在执行 `build` 命令的时候,会按照顺序触发以下 Hooks:
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
- `beforeBuild`
|
|
16
|
+
- `beforeBuildTask`
|
|
17
|
+
- `afterBuildTask`
|
|
18
|
+
- `afterBuild`
|
|
19
19
|
|
|
20
20
|
### `beforeBuild`
|
|
21
21
|
|
|
22
22
|
执行整体构建流程之前触发。
|
|
23
23
|
|
|
24
|
-
```
|
|
24
|
+
```ts
|
|
25
25
|
export default (): CliPlugin<ModuleTools> => ({
|
|
26
26
|
name: 'my-plugin',
|
|
27
27
|
|
|
@@ -29,16 +29,18 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
29
29
|
return {
|
|
30
30
|
beforeBuild(options: Options): Return {
|
|
31
31
|
return options.config;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
34
|
},
|
|
35
35
|
});
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
参数和返回值类型:
|
|
39
39
|
|
|
40
|
-
```
|
|
41
|
-
type Options = {
|
|
40
|
+
```ts
|
|
41
|
+
type Options = {
|
|
42
|
+
options: { config: BuildConfig; cliOptions: BuildCommandOptions };
|
|
43
|
+
};
|
|
42
44
|
|
|
43
45
|
export interface BuildCommandOptions {
|
|
44
46
|
config: string;
|
|
@@ -52,13 +54,13 @@ export interface BuildCommandOptions {
|
|
|
52
54
|
type Return = BuildConfig;
|
|
53
55
|
```
|
|
54
56
|
|
|
55
|
-
> `BuildConfig` 类型参考 [API 配置](
|
|
57
|
+
> `BuildConfig` 类型参考 [API 配置](/api/)
|
|
56
58
|
|
|
57
59
|
### `beforeBuildTask`
|
|
58
60
|
|
|
59
|
-
根据构建配置,
|
|
61
|
+
根据构建配置,Module Tools 会将整体构建分成多个子构建任务。该 Hook 将会在每一个构建子任务之前触发。
|
|
60
62
|
|
|
61
|
-
```
|
|
63
|
+
```ts
|
|
62
64
|
export default (): CliPlugin<ModuleTools> => ({
|
|
63
65
|
name: 'my-plugin',
|
|
64
66
|
|
|
@@ -66,21 +68,21 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
66
68
|
return {
|
|
67
69
|
beforeBuildTask(config: BaseBuildConfig): BaseBuildConfig {
|
|
68
70
|
return config;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
+
},
|
|
72
|
+
};
|
|
71
73
|
},
|
|
72
74
|
});
|
|
73
75
|
```
|
|
74
76
|
|
|
75
77
|
参数和返回值类型:
|
|
76
78
|
|
|
77
|
-
`BaseBuildConfig` 类型参考 [API 配置](
|
|
79
|
+
`BaseBuildConfig` 类型参考 [API 配置](/api/)。
|
|
78
80
|
|
|
79
81
|
### `afterBuildTask`
|
|
80
82
|
|
|
81
83
|
每一个构建子任务结束之后触发。
|
|
82
84
|
|
|
83
|
-
```
|
|
85
|
+
```ts
|
|
84
86
|
export default (): CliPlugin<ModuleTools> => ({
|
|
85
87
|
name: 'my-plugin',
|
|
86
88
|
|
|
@@ -88,15 +90,15 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
88
90
|
return {
|
|
89
91
|
afterBuildTask(options: BuildTaskResult): void {
|
|
90
92
|
// ...
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
+
},
|
|
94
|
+
};
|
|
93
95
|
},
|
|
94
96
|
});
|
|
95
97
|
```
|
|
96
98
|
|
|
97
99
|
参数和返回值类型:
|
|
98
100
|
|
|
99
|
-
```
|
|
101
|
+
```ts
|
|
100
102
|
export interface BuildTaskResult {
|
|
101
103
|
status: 'success' | 'fail';
|
|
102
104
|
message?: string;
|
|
@@ -108,7 +110,7 @@ export interface BuildTaskResult {
|
|
|
108
110
|
|
|
109
111
|
整体构建流程结束之后触发。
|
|
110
112
|
|
|
111
|
-
```
|
|
113
|
+
```ts
|
|
112
114
|
export default (): CliPlugin<ModuleTools> => ({
|
|
113
115
|
name: 'my-plugin',
|
|
114
116
|
|
|
@@ -116,15 +118,15 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
116
118
|
return {
|
|
117
119
|
afterBuild(options: BuildResult): void {
|
|
118
120
|
// ...
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
+
},
|
|
122
|
+
};
|
|
121
123
|
},
|
|
122
124
|
});
|
|
123
125
|
```
|
|
124
126
|
|
|
125
127
|
参数和返回值类型:
|
|
126
128
|
|
|
127
|
-
```
|
|
129
|
+
```ts
|
|
128
130
|
export interface BuildResult {
|
|
129
131
|
status: 'success' | 'fail';
|
|
130
132
|
message?: string;
|
|
@@ -142,16 +144,16 @@ module-tools 还提供了 `build --platform` 命令来执行特定的构建任
|
|
|
142
144
|
|
|
143
145
|
在执行 `build --platform` 后会按照以下顺序触发 Hooks:
|
|
144
146
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
- `registerBuildPlatform`
|
|
148
|
+
- `beforeBuildPlatform`
|
|
149
|
+
- `buildPlatform`
|
|
150
|
+
- `afterBuildPlatform`
|
|
149
151
|
|
|
150
152
|
### `registerBuildPlatform`
|
|
151
153
|
|
|
152
154
|
获取在执行 `build --platform` 命令时候需要运行的任务信息。
|
|
153
155
|
|
|
154
|
-
```
|
|
156
|
+
```ts
|
|
155
157
|
export default (): CliPlugin<ModuleTools> => ({
|
|
156
158
|
name: 'my-plugin',
|
|
157
159
|
|
|
@@ -173,7 +175,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
173
175
|
|
|
174
176
|
入参和返回的参数类型:
|
|
175
177
|
|
|
176
|
-
```
|
|
178
|
+
```ts
|
|
177
179
|
export interface RegisterBuildPlatformResult {
|
|
178
180
|
platform: string | string[];
|
|
179
181
|
build: (
|
|
@@ -187,7 +189,7 @@ export interface RegisterBuildPlatformResult {
|
|
|
187
189
|
|
|
188
190
|
当执行 `build --platform` 命令的时候,会触发所有已注册的构建任务。`beforeBuildPlatform` 会在执行整体的构建任务之前触发。
|
|
189
191
|
|
|
190
|
-
```
|
|
192
|
+
```ts
|
|
191
193
|
export default (): CliPlugin<ModuleTools> => ({
|
|
192
194
|
name: 'my-plugin',
|
|
193
195
|
|
|
@@ -203,7 +205,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
203
205
|
|
|
204
206
|
入参和返回的参数类型:
|
|
205
207
|
|
|
206
|
-
```
|
|
208
|
+
```ts
|
|
207
209
|
export interface RegisterBuildPlatformResult {
|
|
208
210
|
platform: string | string[];
|
|
209
211
|
build: (
|
|
@@ -217,7 +219,7 @@ export interface RegisterBuildPlatformResult {
|
|
|
217
219
|
|
|
218
220
|
当执行 `build --platform` 命令的时候,会触发所有已注册的构建任务。`buildPlatform` 会在每个构建任务执行之前触发。
|
|
219
221
|
|
|
220
|
-
```
|
|
222
|
+
```ts
|
|
221
223
|
export default (): CliPlugin<ModuleTools> => ({
|
|
222
224
|
name: 'my-plugin',
|
|
223
225
|
|
|
@@ -233,7 +235,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
233
235
|
|
|
234
236
|
入参和返回的参数类型:
|
|
235
237
|
|
|
236
|
-
```
|
|
238
|
+
```ts
|
|
237
239
|
export interface Options {
|
|
238
240
|
platform: string;
|
|
239
241
|
}
|
|
@@ -243,7 +245,7 @@ export interface Options {
|
|
|
243
245
|
|
|
244
246
|
当执行 `build --platform` 命令的时候,会触发所有已注册的构建任务。`afterBuildPlatform` 会在整体 platform 构建任务结束后触发。
|
|
245
247
|
|
|
246
|
-
```
|
|
248
|
+
```ts
|
|
247
249
|
export default (): CliPlugin<ModuleTools> => ({
|
|
248
250
|
name: 'my-plugin',
|
|
249
251
|
|
|
@@ -270,7 +272,6 @@ export interface BuildPlatformResult {
|
|
|
270
272
|
}
|
|
271
273
|
```
|
|
272
274
|
|
|
273
|
-
|
|
274
275
|
## 调试钩子
|
|
275
276
|
|
|
276
277
|
在执行 `dev` 命令的时候,会按照顺序触发以下 Hooks:
|
|
@@ -286,13 +287,13 @@ export interface BuildPlatformResult {
|
|
|
286
287
|
|
|
287
288
|
注册调试工具相关的数据。主要包含:
|
|
288
289
|
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
290
|
+
- 调试工具的名称
|
|
291
|
+
- 显示在菜单列表中的项目名称以及对应的值。
|
|
292
|
+
- `dev` 子命令的定义。
|
|
293
|
+
- 是否在运行调试任务之前执行源码构建
|
|
294
|
+
- 执行调试任务的函数。
|
|
294
295
|
|
|
295
|
-
```
|
|
296
|
+
```ts
|
|
296
297
|
export default (): CliPlugin<ModuleTools> => ({
|
|
297
298
|
name: 'my-plugin',
|
|
298
299
|
|
|
@@ -321,7 +322,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
321
322
|
|
|
322
323
|
入参和返回的参数类型:
|
|
323
324
|
|
|
324
|
-
```
|
|
325
|
+
```ts
|
|
325
326
|
export interface DevToolData {
|
|
326
327
|
name: string;
|
|
327
328
|
subCommands?: string[];
|
|
@@ -348,7 +349,7 @@ export interface DevToolData {
|
|
|
348
349
|
|
|
349
350
|
在收集完所有调试工具元数据后,执行 dev 任务之前触发。
|
|
350
351
|
|
|
351
|
-
```
|
|
352
|
+
```ts
|
|
352
353
|
export default (): CliPlugin<ModuleTools> => ({
|
|
353
354
|
name: 'my-plugin',
|
|
354
355
|
|
|
@@ -364,7 +365,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
364
365
|
|
|
365
366
|
入参和返回的参数类型:
|
|
366
367
|
|
|
367
|
-
```
|
|
368
|
+
```ts
|
|
368
369
|
export interface DevToolData {
|
|
369
370
|
name: string;
|
|
370
371
|
subCommands?: string[];
|
|
@@ -385,7 +386,7 @@ export interface DevToolData {
|
|
|
385
386
|
|
|
386
387
|
`beforeDevMenu` 在出现调试列表/菜单之前触发。接收 [inquirer question](https://github.com/SBoudrias/Inquirer.js#question) 作为参数。默认值为:
|
|
387
388
|
|
|
388
|
-
```
|
|
389
|
+
```ts
|
|
389
390
|
const question = [
|
|
390
391
|
{
|
|
391
392
|
name: 'choiceDevTool',
|
|
@@ -399,7 +400,7 @@ const question = [
|
|
|
399
400
|
|
|
400
401
|
`afterDevMenu` 选择调试列表/菜单选项后触发。
|
|
401
402
|
|
|
402
|
-
```
|
|
403
|
+
```ts
|
|
403
404
|
export default (): CliPlugin<ModuleTools> => ({
|
|
404
405
|
name: 'my-plugin',
|
|
405
406
|
|
|
@@ -411,7 +412,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
411
412
|
},
|
|
412
413
|
afterDevMenu(options: Options) {
|
|
413
414
|
console.info(`choise ${options.result.choiceDevTool} dev tools`);
|
|
414
|
-
}
|
|
415
|
+
},
|
|
415
416
|
};
|
|
416
417
|
},
|
|
417
418
|
});
|
|
@@ -419,7 +420,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
419
420
|
|
|
420
421
|
入参和返回的参数类型:
|
|
421
422
|
|
|
422
|
-
```
|
|
423
|
+
```ts
|
|
423
424
|
export type { QuestionCollection } from 'inquirer';
|
|
424
425
|
|
|
425
426
|
export interface Options {
|
|
@@ -427,7 +428,7 @@ export interface Options {
|
|
|
427
428
|
devTools: DevToolData[];
|
|
428
429
|
}
|
|
429
430
|
|
|
430
|
-
export type PromptResult = { choiceDevTool: string }
|
|
431
|
+
export type PromptResult = { choiceDevTool: string };
|
|
431
432
|
export interface DevToolData {
|
|
432
433
|
name: string;
|
|
433
434
|
subCommands?: string[];
|
|
@@ -448,7 +449,7 @@ export interface DevToolData {
|
|
|
448
449
|
|
|
449
450
|
执行调试任务之前触发。
|
|
450
451
|
|
|
451
|
-
```
|
|
452
|
+
```ts
|
|
452
453
|
export default (): CliPlugin<ModuleTools> => ({
|
|
453
454
|
name: 'my-plugin',
|
|
454
455
|
|
|
@@ -464,7 +465,7 @@ export default (): CliPlugin<ModuleTools> => ({
|
|
|
464
465
|
|
|
465
466
|
入参和返回的参数类型:
|
|
466
467
|
|
|
467
|
-
```
|
|
468
|
+
```ts
|
|
468
469
|
export interface DevToolData {
|
|
469
470
|
name: string;
|
|
470
471
|
subCommands?: string[];
|
|
@@ -485,7 +486,7 @@ export interface DevToolData {
|
|
|
485
486
|
|
|
486
487
|
在中断调试任务进程时触发。
|
|
487
488
|
|
|
488
|
-
```
|
|
489
|
+
```ts
|
|
489
490
|
export default (): CliPlugin<ModuleTools> => ({
|
|
490
491
|
name: 'my-plugin',
|
|
491
492
|
|
|
@@ -22,7 +22,7 @@ export default defineConfig({
|
|
|
22
22
|
|
|
23
23
|
## umd 产物的第三方依赖处理
|
|
24
24
|
|
|
25
|
-
在 [【如何处理第三方依赖】](/
|
|
25
|
+
在 [【如何处理第三方依赖】](/guide/advance/external-dependency) 章节中,我们知道可以通过 [`autoExternals`](/api/config/build-config#autoexternal) 和 [`externals`](/api/config/build-config#externals) API 来控制项目是否对第三方依赖打包。
|
|
26
26
|
因此在构建 umd 产物的过程中,我们也可以这样使用:
|
|
27
27
|
|
|
28
28
|
<CH.Spotlight>
|
|
@@ -110,7 +110,7 @@ console.info(React);
|
|
|
110
110
|
- 在 Node.js 环境下,可以通过 `require('react')` 获取 react 依赖。
|
|
111
111
|
- 在 浏览器环境下,可以通过 `global.react` 获取 react 依赖。
|
|
112
112
|
|
|
113
|
-
然而在浏览器环境下,获取第三方依赖的时候,**全局变量名称不一定与依赖名称完全相同**,此时就要使用 [`buildConfig.umdGlobals`](/
|
|
113
|
+
然而在浏览器环境下,获取第三方依赖的时候,**全局变量名称不一定与依赖名称完全相同**,此时就要使用 [`buildConfig.umdGlobals`](/api/config/build-config#umdglobals) API。
|
|
114
114
|
|
|
115
115
|
还是使用之前的例子,当 `react` 依赖以 `windows.React` 或者 `global.React` 全局变量的形式存在于浏览器环境下,那么此时:
|
|
116
116
|
|
|
@@ -218,7 +218,7 @@ export default () => {
|
|
|
218
218
|
});
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
如果需要修改它,则需要使用 [`buildConfig.umdModuleName`](/
|
|
221
|
+
如果需要修改它,则需要使用 [`buildConfig.umdModuleName`](/api/config/build-config#umdmodulename) API。
|
|
222
222
|
|
|
223
223
|
当使用该 API 后:
|
|
224
224
|
|
|
@@ -8,10 +8,10 @@ sidebar_position: 3
|
|
|
8
8
|
|
|
9
9
|
## 了解 Copy API
|
|
10
10
|
|
|
11
|
-
我们可以通过 [`buildConfig.copy`](/
|
|
11
|
+
我们可以通过 [`buildConfig.copy`](/api/config/build-config#copy) API 来使用 Copy 工具,它包含以下两个主要配置:
|
|
12
12
|
|
|
13
|
-
- [`patterns`](/
|
|
14
|
-
- [`options`](/
|
|
13
|
+
- [`patterns`](/api/config/build-config#copypatterns)
|
|
14
|
+
- [`options`](/api/config/build-config#copyoptions)
|
|
15
15
|
|
|
16
16
|
在开始学习之前可以先花一些时间了解它们。
|
|
17
17
|
|
|
@@ -34,7 +34,7 @@ export default defineConfig({
|
|
|
34
34
|
});
|
|
35
35
|
```
|
|
36
36
|
|
|
37
|
-
`patterns.context` 一般和 `patterns.from` 配合使用,默认情况下它的值与 [`buildConfig.sourceDir`](/
|
|
37
|
+
`patterns.context` 一般和 `patterns.from` 配合使用,默认情况下它的值与 [`buildConfig.sourceDir`](/api/config/build-config#sourcedir) 相同,因此我们可以按照如下方式指定 `src/data.json` 文件为要复制的文件:
|
|
38
38
|
|
|
39
39
|
> 默认情况下,`buildConfig.sourceDir` 为 `src`
|
|
40
40
|
|
|
@@ -70,7 +70,7 @@ export default defineConfig({
|
|
|
70
70
|
});
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
`patterns.to` 用于指定复制文件的输出路径,默认情况下它的值为 [`buildConfig.outDir`](
|
|
73
|
+
`patterns.to` 用于指定复制文件的输出路径,默认情况下它的值为 [`buildConfig.outDir`](/api/config/build-config#outDir)对应的值。因此我们按照如下方式将 `src/index.html` 复制到 `dist` 目录下:
|
|
74
74
|
|
|
75
75
|
```ts
|
|
76
76
|
export default defineConfig({
|
|
@@ -15,7 +15,7 @@ sidebar_position: 4
|
|
|
15
15
|
|
|
16
16
|
而 `"dependencies"` 下的依赖通常来说是和项目代码以及构建相关的,如果这些第三方依赖声明在 `"devDependencies"` 下,那么在生产环境下就会出现缺失依赖的问题。
|
|
17
17
|
|
|
18
|
-
除了 `"dependencies"` 以外,[`"peerDependencies"`](/
|
|
18
|
+
除了 `"dependencies"` 以外,[`"peerDependencies"`](/guide/basic/before-getting-started#peerdependencies) 也可以声明在生产环境下需要的依赖,不过它更强调项目在运行环境下存在 `"peerDependencies"` 声明的这些依赖,这类似于插件这样的机制。
|
|
19
19
|
|
|
20
20
|
## 第三方依赖的默认处理
|
|
21
21
|
|
|
@@ -81,8 +81,8 @@ console.info(React);
|
|
|
81
81
|
|
|
82
82
|
在构建配置中提供了以下 API 来处理第三方依赖:
|
|
83
83
|
|
|
84
|
-
- [`buildConfig.autoExternal`](/
|
|
85
|
-
- [`buildConfig.externals`](/
|
|
84
|
+
- [`buildConfig.autoExternal`](/api/config/build-config#autoexternal)
|
|
85
|
+
- [`buildConfig.externals`](/api/config/build-config#externals)
|
|
86
86
|
|
|
87
87
|
### 关闭默认行为
|
|
88
88
|
|
|
@@ -9,7 +9,7 @@ sidebar_position: 1
|
|
|
9
9
|
:::tip{title=注意}
|
|
10
10
|
如果你还不清楚 `buildConfig` 是什么,建议花一些时间通过下面的链接了解一下:
|
|
11
11
|
|
|
12
|
-
- 【[修改输出产物](/
|
|
12
|
+
- 【[修改输出产物](/guide/basic/modify-output-product)】
|
|
13
13
|
:::
|
|
14
14
|
|
|
15
15
|
而在本章里我们将要深入理解某些构建配置的使用以及了解执行 `modern build` 命令的时候发生了什么。
|
|
@@ -24,11 +24,11 @@ sidebar_position: 1
|
|
|
24
24
|
|
|
25
25
|
而 Bundleless 则是指对每个源文件单独进行编译构建,但是并不将它们打包在一起。每一个产物文件都可以找到与之相对应的源码文件。**Bundleless 构建的过程,也可以理解为仅对源文件进行代码转换的过程**。
|
|
26
26
|
|
|
27
|
-
在 `buildConfig` 中可以通过 [`buildConfig.buildType`](/
|
|
27
|
+
在 `buildConfig` 中可以通过 [`buildConfig.buildType`](/api/config/build-config#buildtype) 来指定当前构建任务是 Bundle 还是 Bundleless。
|
|
28
28
|
|
|
29
29
|
### `input` 与 `sourceDir` 的关系
|
|
30
30
|
|
|
31
|
-
[`buildConfig.input`](/
|
|
31
|
+
[`buildConfig.input`](/api/config/build-config#input) 用于指定读取源码的文件路径或者目录路径,其默认值在 Bundle 和 Bundleless 构建过程中有所不同:
|
|
32
32
|
|
|
33
33
|
- 当 `buildType: 'bundle'` 的时候,`input` 默认值为 `['src/index.ts']`
|
|
34
34
|
- 当 `buildType: 'bundleless'` 的时候,`input` 默认值为 `['src']`
|
|
@@ -61,7 +61,7 @@ export default defineConfig({
|
|
|
61
61
|
|
|
62
62
|
#### `sourceDir`
|
|
63
63
|
|
|
64
|
-
[`sourceDir`](/
|
|
64
|
+
[`sourceDir`](/api/config/build-config#sourcedir) 用于指定源码目录,它主要与以下两个内容有关系:
|
|
65
65
|
|
|
66
66
|
- 类型文件生成
|
|
67
67
|
- 指定构建过程中的 [`outbase`](https://esbuild.github.io/api/#outbase)
|
|
@@ -73,7 +73,7 @@ export default defineConfig({
|
|
|
73
73
|
|
|
74
74
|
### 类型文件
|
|
75
75
|
|
|
76
|
-
[`buildConfig.dts`](/
|
|
76
|
+
[`buildConfig.dts`](/api/config/build-config#dts) 配置主要用于类型文件的生成。
|
|
77
77
|
|
|
78
78
|
#### 关闭类型生成
|
|
79
79
|
|
|
@@ -99,7 +99,7 @@ export default defineConfig({
|
|
|
99
99
|
|
|
100
100
|
**模块工程解决方案同时还支持对类型文件进行打包**,不过使用该功能的时候需要注意:
|
|
101
101
|
|
|
102
|
-
- 一些第三方依赖存在错误的语法会导致打包过程失败。因此对于这种情况,需要手动通过 [`buildConfig.externals`](/
|
|
102
|
+
- 一些第三方依赖存在错误的语法会导致打包过程失败。因此对于这种情况,需要手动通过 [`buildConfig.externals`](/api/config/build-config#externals) 将这类第三方包排除。
|
|
103
103
|
- 对于第三方依赖的类型文件指向的是一个 `.ts` 文件的情况,目前无法处理。比如第三方依赖的 `package.json` 中存在这样的内容: `{"types": "./src/index.ts"}`。
|
|
104
104
|
|
|
105
105
|
#### 别名转换
|
|
@@ -165,7 +165,7 @@ export default defineConfig({
|
|
|
165
165
|
|
|
166
166
|
### `buildConfig.define` 不同场景的使用方式
|
|
167
167
|
|
|
168
|
-
[`buildConfig.define`](/
|
|
168
|
+
[`buildConfig.define`](/api/config/build-config#define) 功能有些类似 [`webpack.DefinePlugin`](https://webpack.js.org/plugins/define-plugin/)。这里介绍几个使用场景:
|
|
169
169
|
|
|
170
170
|
#### 环境变量替换
|
|
171
171
|
|
|
@@ -4,7 +4,7 @@ sidebar_position: 6
|
|
|
4
4
|
|
|
5
5
|
# 主题配置
|
|
6
6
|
|
|
7
|
-
模块工程通过 [`designSystem`](/
|
|
7
|
+
模块工程通过 [`designSystem`](/api/config/design-system) API,提供了配置主题的能力。
|
|
8
8
|
|
|
9
9
|
## 动机和原理
|
|
10
10
|
|
|
@@ -17,7 +17,7 @@ sidebar_position: 6
|
|
|
17
17
|
- 在 css/less/sass 下通过 `@apply` 自定义指令使用与 tailwindcss 支持的 HTML 类名同名的字符串。
|
|
18
18
|
- css/less/scss: 通过 `designSystem` 生成全局的样式变量。
|
|
19
19
|
|
|
20
|
-
`designSystem` API 的数据结构借鉴了 `tailwindcss` 配置对象中的 [theme API](https://tailwindcss.com/docs/theme),因此存在默认的一套 `designToken`。关于默认值,可以查看 [`designSystem` API](/
|
|
20
|
+
`designSystem` API 的数据结构借鉴了 `tailwindcss` 配置对象中的 [theme API](https://tailwindcss.com/docs/theme),因此存在默认的一套 `designToken`。关于默认值,可以查看 [`designSystem` API](/api/config/design-system)。
|
|
21
21
|
|
|
22
22
|
:::info
|
|
23
23
|
目前暂时还未支持 css/less/sass 全局变量。
|
|
@@ -14,7 +14,7 @@ sidebar_position: 1
|
|
|
14
14
|
|
|
15
15
|
npm 是 NodeJS 的标准软件包管理器。它一开始的用途是用于下载和管理 NodeJS 包的依赖关系,但后来它逐渐变成为一个用于前端 JavaScript 的工具。
|
|
16
16
|
|
|
17
|
-
**如果你已经对 npm 和 npm 包的使用方式有所了解,那么可以直接跳到[【npm 包管理器】](/
|
|
17
|
+
**如果你已经对 npm 和 npm 包的使用方式有所了解,那么可以直接跳到[【npm 包管理器】](/guide/basic/before-getting-started#npm-包管理器)部分。**
|
|
18
18
|
|
|
19
19
|
## npm 包类型项目
|
|
20
20
|
|
|
@@ -26,7 +26,7 @@ Options:
|
|
|
26
26
|
当想要启动项目构建的时候,可以执行 `modern build` 命令。在使用这个命令的时候,我们可以:
|
|
27
27
|
|
|
28
28
|
- 当想要以观察模式启动构建时,使用 `--watch` 选项。
|
|
29
|
-
- 当想要指定项目编译读取的 TypeScript 配置文件的路径时,使用 `build --tsconfig ./path/config.json` 选项。使用该选项后,会覆盖所有 [`buildConfig`](/
|
|
29
|
+
- 当想要指定项目编译读取的 TypeScript 配置文件的路径时,使用 `build --tsconfig ./path/config.json` 选项。使用该选项后,会覆盖所有 [`buildConfig`](/api/config/build-config) 里 [`dts.tsconfigPath`](/api/config/build-config) 配置。
|
|
30
30
|
- 当需要关闭项目的 DTS 类型文件生成和类型检查行为时,可以使用 `--no-dts` 选项。**注意:类型文件的生成依赖类型检查的结果。如果关闭了类型检查,那么类型文件也不会生成**。
|
|
31
31
|
- 当需要关闭自动清除产物输出目录的行为时,可以使用 `--no-clear` 选项。
|
|
32
32
|
|
|
@@ -59,7 +59,7 @@ Options:
|
|
|
59
59
|
- Tailwind CSS 支持
|
|
60
60
|
- Modern.js Runtime API
|
|
61
61
|
|
|
62
|
-
关于这些功能,可以通过[【使用微生成器】](/
|
|
62
|
+
关于这些功能,可以通过[【使用微生成器】](/guide/basic/use-micro-generator) 章节了解更多。
|
|
63
63
|
|
|
64
64
|
## `modern dev`
|
|
65
65
|
|