@modern-js/main-doc 0.0.0-nightly-20241104170657 → 0.0.0-nightly-20241106064312

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 (44) hide show
  1. package/docs/en/components/init-app.mdx +0 -1
  2. package/docs/en/components/init-rspack-app.mdx +0 -1
  3. package/docs/en/guides/get-started/introduction.mdx +1 -38
  4. package/docs/zh/components/default-mwa-generate.mdx +0 -1
  5. package/docs/zh/components/init-app.mdx +0 -1
  6. package/docs/zh/components/init-rspack-app.mdx +0 -1
  7. package/docs/zh/guides/get-started/introduction.mdx +1 -36
  8. package/package.json +2 -2
  9. package/docs/en/guides/topic-detail/generator/_meta.json +0 -17
  10. package/docs/en/guides/topic-detail/generator/create/_meta.json +0 -1
  11. package/docs/en/guides/topic-detail/generator/create/config.mdx +0 -59
  12. package/docs/en/guides/topic-detail/generator/create/option.md +0 -146
  13. package/docs/en/guides/topic-detail/generator/create/use.mdx +0 -48
  14. package/docs/en/guides/topic-detail/generator/new/_meta.json +0 -1
  15. package/docs/en/guides/topic-detail/generator/new/config.md +0 -115
  16. package/docs/en/guides/topic-detail/generator/new/option.md +0 -67
  17. package/docs/en/guides/topic-detail/generator/new/use.md +0 -75
  18. package/docs/en/guides/topic-detail/generator/plugin/_meta.json +0 -11
  19. package/docs/en/guides/topic-detail/generator/plugin/api/afterForged.md +0 -49
  20. package/docs/en/guides/topic-detail/generator/plugin/api/context.md +0 -184
  21. package/docs/en/guides/topic-detail/generator/plugin/api/input.md +0 -124
  22. package/docs/en/guides/topic-detail/generator/plugin/api/onForged.md +0 -310
  23. package/docs/en/guides/topic-detail/generator/plugin/category.md +0 -88
  24. package/docs/en/guides/topic-detail/generator/plugin/context.md +0 -104
  25. package/docs/en/guides/topic-detail/generator/plugin/structure.md +0 -106
  26. package/docs/en/guides/topic-detail/generator/plugin/use.md +0 -33
  27. package/docs/zh/guides/topic-detail/generator/_meta.json +0 -17
  28. package/docs/zh/guides/topic-detail/generator/create/_meta.json +0 -1
  29. package/docs/zh/guides/topic-detail/generator/create/config.mdx +0 -60
  30. package/docs/zh/guides/topic-detail/generator/create/option.md +0 -146
  31. package/docs/zh/guides/topic-detail/generator/create/use.mdx +0 -48
  32. package/docs/zh/guides/topic-detail/generator/new/_meta.json +0 -1
  33. package/docs/zh/guides/topic-detail/generator/new/config.md +0 -116
  34. package/docs/zh/guides/topic-detail/generator/new/option.md +0 -67
  35. package/docs/zh/guides/topic-detail/generator/new/use.md +0 -74
  36. package/docs/zh/guides/topic-detail/generator/plugin/_meta.json +0 -11
  37. package/docs/zh/guides/topic-detail/generator/plugin/api/afterForged.md +0 -50
  38. package/docs/zh/guides/topic-detail/generator/plugin/api/context.md +0 -184
  39. package/docs/zh/guides/topic-detail/generator/plugin/api/input.md +0 -124
  40. package/docs/zh/guides/topic-detail/generator/plugin/api/onForged.md +0 -310
  41. package/docs/zh/guides/topic-detail/generator/plugin/category.md +0 -93
  42. package/docs/zh/guides/topic-detail/generator/plugin/context.md +0 -105
  43. package/docs/zh/guides/topic-detail/generator/plugin/structure.md +0 -106
  44. package/docs/zh/guides/topic-detail/generator/plugin/use.md +0 -33
@@ -1,116 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # 配置参数
6
-
7
- `new` 命令提供了 [--config](/guides/topic-detail/generator/new/option.html#-c,---config-<config>) 参数,用于提前指定执行过程中交互问题的答案。
8
-
9
- 这里将介绍不同情况下,可以在 `config` 中配置的字段及字段值。
10
-
11
- ## 通用配置
12
-
13
- ### actionType
14
-
15
- 问题:请选择你想要的操作
16
-
17
- 选项:
18
-
19
- - 创建工程元素 -- element
20
-
21
- - 启用可选功能 -- function
22
-
23
- - 自动重构 -- refactor
24
-
25
- ## Web 应用
26
-
27
- ### element
28
-
29
- 问题:请选择创建元素类型
30
-
31
- 选项:
32
-
33
- - 新建「应用入口」 -- entry
34
-
35
- - 新建「自定义 Web Server」源码目录 -- server
36
-
37
- ### name
38
-
39
- 问题: 请填写入口名称
40
-
41
- :::info
42
- 新建应用入口时需要该配置,该配置值为字符串类型。
43
- :::
44
-
45
- ### function
46
-
47
- 问题:请选择功能名称
48
-
49
- 选项:
50
-
51
- - 启用「Rspack 构建」 -- rspack
52
-
53
- - 启用 「Tailwind CSS」 支持 -- tailwindcss
54
-
55
- - 启用「BFF」功能 -- bff
56
-
57
- - 启用「SSG」功能 -- ssg
58
-
59
- - 启用「SWC 编译」-- swc
60
-
61
- - 启用「微前端」模式 -- micro_frontend
62
-
63
- - 启用「基于 UA 的 Polyfill」功能 -- polyfill
64
-
65
- - 启用「全局代理」 -- proxy
66
-
67
-
68
- ### bffType
69
-
70
- 问题:请选择 BFF 类型
71
-
72
- 选项:
73
-
74
- - 函数模式 -- func
75
-
76
- - 框架模式 -- framework
77
-
78
- :::info
79
- 启用 BFF 功能时需要该配置。
80
- :::
81
-
82
- ### framework
83
-
84
- 问题:请选择运行时框架
85
-
86
- 选项:
87
-
88
- - Express -- express
89
-
90
- - Koa -- koa
91
-
92
- :::info
93
- 启用 BFF 功能时需要该配置。
94
- :::
95
-
96
- ### refactor
97
-
98
- 问题:请选择重构类型
99
-
100
- 选项:
101
-
102
- - 使用 React Router v5 -- react_router_5
103
-
104
- ## Npm 模块
105
-
106
- ### function
107
-
108
- 问题:启用可选功能
109
-
110
- 选项:
111
-
112
- - 启用 「Tailwind CSS」 支持 -- tailwindcss
113
-
114
- - 启用「Storybook」 -- storybook
115
-
116
- - 启用「Runtime API」 -- runtime_api
@@ -1,67 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # CLI 参数
6
-
7
- `new` 命令提供了很多配置参数用于配置其执行过程中的行为,可以通过 `--help` 参数进行查看:
8
-
9
- ```bash
10
- npm run new --help
11
-
12
- Usage: modern new [options]
13
-
14
- 启用可选功能
15
-
16
- Options:
17
- --lang <lang> 设置 new 命令执行语言(zh 或者 en)
18
- -c, --config <config> 生成器运行默认配置(JSON 字符串)
19
- -d, --debug 开启 Debug 模式,打印调试日志信息 (default: false)
20
- --dist-tag <tag> 生成器使用特殊的 npm Tag 版本
21
- --registry <registry> 生成器运行过程中定制 npm Registry
22
- -h, --help display help for command
23
- ```
24
-
25
- 下面将针对这些参数做详细介绍:
26
-
27
- ## --lang \<lang>
28
-
29
- 执行执行语言,支持 `zh` 和 `en`。
30
-
31
- 默认情况下,`new` 命令会自动识别用户的系统语言,选择使用中文或者英文,如果识别失败或者不符合使用习惯,可以使用该参数手动指定。
32
-
33
- ## -c, --config \<config>
34
-
35
- 指定项目默认配置。
36
-
37
- 默认情况下,new 命令在执行过程中会出现选择操作类型、开启功能等交互问题,当需要提前指定这些配置内容时,可以通过该字段传入。
38
-
39
- 该字段为 JSON 字符串,例如需指定 BFF 框架时:
40
-
41
- ```bash
42
- npm run new --config '{"framework": "express"}'
43
- ```
44
-
45
- `config` 支持的参数可查看[配置参数](/guides/topic-detail/generator/new/config.html)。
46
-
47
- ## -d,--debug
48
-
49
- 展示调试日志。
50
-
51
- 当在使用过程中遇到问题时,可以使用该参数显示调试日志,方便快速定位问题位置及对问题进行排查。
52
-
53
- ## --registry \<registry>
54
-
55
- 指定执行子生成器和获取项目依赖版本的 npm registry。
56
-
57
- ## --dist-tag \<distTag>
58
-
59
- 指定生成器版本。
60
-
61
- `new` 命令执行过程中会执行更小的微生成器,默认会使用 `latest` 的微生成器版本,使用该参数可以指定执行的微生成器的版本号的版本。
62
-
63
- 比如使用 `next` 版本:
64
-
65
- ```bash
66
- npm run new --dist-tag next
67
- ```
@@ -1,74 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # 使用
6
-
7
- 在 Web 应用、 Npm 模块中,我们提供了 `new` 命令用于创建项目元素、开启功能和创建子项目。
8
-
9
- ## Web 应用
10
-
11
- Web 应用项目通过 `@modern-js/app-tools` 提供 `new` 命令。
12
-
13
- new 命令提供了三种操作类型:
14
-
15
- - 创建工程元素
16
-
17
- - 启用可选功能
18
-
19
- - 自动重构
20
-
21
- 每种操作类型都提供了对应支持的列表,可根据项目情况进行选择。
22
-
23
- 例如:
24
-
25
- 创建新的应用入口:
26
-
27
- ```bash
28
- npm run new
29
- ? 请选择你想要的操作 创建工程元素
30
- ? 请选择创建元素类型 新建「应用入口」
31
- ? 请填写入口名称 entry
32
- ```
33
-
34
- 执行完成后将会在项目 `src` 目录创建新入口对应名称的文件夹及默认入口文件,并且自动帮忙整理之前 `src` 下入口文件到 `package.json` 中 `name` 字段对应的文件夹中。
35
-
36
- 开启 BFF 功能:
37
-
38
- ```bash
39
- npm run new
40
- ? 请选择你想要的操作 启用可选功能
41
- ? 请选择功能名称 启用「BFF」功能
42
- ? 请选择 BFF 类型 函数模式
43
- ? 请选择运行时框架 Express
44
- ```
45
-
46
- 执行完成后将会在项目安装 BFF 相关依赖,并创建 api 目录用于 BFF 模块的开发并提供提示信息用于注册 BFF 插件。
47
-
48
- :::info
49
- 这里未帮助用户自动注册插件,原因是由于 `modern.config.[tj]s` 在项目生命周期中变化比较复杂,可能存在模块之间互相引用问题,让用户手动注册能保证修改配置的正确性。
50
-
51
- 在后续定制化的开发中,如果有类似的需求,也可以通过提示的方式给到使用方操作指南,让用户对文件进行手动操作。
52
- :::
53
-
54
- :::warning
55
- 执行 new 命令时可能会出现需要开启的功能不在列表中,需要检查一下项目 `package.json` 中是否已经安装对应功能的插件,如果仍需使用 new 命令开启,需要先手动移除对应的插件依赖。
56
- :::
57
-
58
- ## Npm 模块
59
-
60
- Npm 模块项目通过 `@modern-js/module-tools` 提供 new 命令。
61
-
62
- new 命令提供了启用可选功能的能力。
63
-
64
- 例如:
65
-
66
- 开启 Storybook 能力:
67
-
68
- ```bash
69
- npm run new
70
- ? 请选择你想要的操作 启用可选功能
71
- ? 请选择功能名称 启用「Storybook」
72
- ```
73
-
74
- 执行完成后将会在项目安装 Storybook 插件相关依赖,增加 `storybook` 命令,创建 `stories` 目录用于 Storybook 模块的开发并提供提示信息用于注册 Storybook 插件。
@@ -1,11 +0,0 @@
1
- [
2
- "structure",
3
- "category",
4
- "use",
5
- "context",
6
- {
7
- "type": "dir",
8
- "name": "api",
9
- "label": "API"
10
- }
11
- ]
@@ -1,50 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # afterForged
6
-
7
- `afterForged` 为生成器插件中用于文件操作后其他步骤操作的生命周期函数。
8
-
9
- ## 类型
10
-
11
- ```ts
12
- export type AfterForgedAPI = {
13
- isInGitRepo: () => Promise<boolean>;
14
- initGitRepo: () => Promise<void>;
15
- gitAddAndCommit: (commitMessage: string) => Promise<void>;
16
- install: () => Promise<void>;
17
- };
18
-
19
- export type PluginAfterForgedFunc = (api: AfterForgedAPI, inputData: Record<string, unknown>) => Promise<void>;
20
-
21
- export interface IPluginContext {
22
- afterForged: (func: PluginAfterForgedFunc) => void;
23
- ...
24
- }
25
- ```
26
-
27
- ## API
28
-
29
- 下面将分别介绍 api 参数提供的 API。
30
-
31
- ### isInGitRepo
32
-
33
- 判断当前项目是否为一个 Git 仓库。
34
-
35
- ### initGitRepo
36
-
37
- 初始化当前项目为 Git 仓库。
38
-
39
- ### gitAddAndCommit
40
-
41
- 提交当前仓库变更。
42
-
43
- 参数:
44
-
45
- - `commitMessage`: commit 信息。
46
-
47
-
48
- ### install
49
-
50
- 在项目根目录安装依赖。`install` 函数中将根据 `packageManager` 的值使用对应的包管理工具安装依赖。
@@ -1,184 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # context
6
-
7
- 生成器插件在 `main` 文件中默认导出了一个函数,函数参数为 `context`,生成器插件提供的所有 API 都是由这个 `context` 提供的。
8
-
9
- ## 类型
10
-
11
- 我们先大概了解一下 `context` 的类型定义:
12
-
13
- ```ts
14
- export interface IPluginContext {
15
- locale?: string;
16
- addInputBefore: (key: string, input: Schema) => void;
17
- addInputAfter: (key: string, input: Schema) => void;
18
- setInput: (key: string, field: string, value: unknown) => void;
19
- setInputValue: (value: Record<string, unknown>) => void;
20
- setDefaultConfig: (value: Record<string, unknown>) => void;
21
- isFileExist: (fileName: string) => Promise<boolean>;
22
- readDir: (dir: string) => Promise<string[]>;
23
- setGitMessage: (gitMessage: string) => void;
24
- onForged: (func: PluginForgedFunc) => void;
25
- afterForged: (func: PluginAfterForgedFunc) => void;
26
- }
27
- ```
28
-
29
- `context` 提供的内容主要分为三类:
30
-
31
- - 获取当前生成器执行环境信息
32
-
33
- - 操作 input 输入
34
-
35
- - 生成器插件生命周期函数
36
-
37
- 下面将从这三个分类分别介绍生成器插件 API。
38
-
39
-
40
- ### 获取信息
41
-
42
- #### locale
43
-
44
- 获取生成器插件执行环境的语言。`@modern-js/create` 提供了 `zh` 和 `en` 两种语言,这里即为对应的这两种值。
45
-
46
- #### isFileExist
47
-
48
- 判断文件是否存在。我们很多时候需要在定义操作前确认目标项目文件是否已经存在,可以直接通过该 API 获取。
49
-
50
- 例如我们需要获取 `package.json` 文件是否存在,然后做相应的操作:
51
-
52
- ```ts
53
- const isExist = await context.isFileExist('package.json');
54
- if (isExist) {
55
- ...
56
- }
57
- ```
58
-
59
- #### readDir
60
-
61
- 获取文件夹内文件列表。我们很多时候需要在定义操作前获取目标项目文件夹下面文件列表,可以直接通过该 API 获取。
62
-
63
- 例如我们需要获取 src 文件夹下所有文件,然后进行相应操作:
64
-
65
- ```ts
66
- const files = await context.readDir('src');
67
-
68
- files.map(name => {
69
- ...
70
- });
71
- ```
72
-
73
- ### input 操作
74
-
75
- input 操作中使用的 key 参数可参考[配置参数](/guides/topic-detail/generator/create/config.html),需要在使用对应工程方案下的 key,即不支持在 `solution` 和 `scenes`。
76
-
77
- input 操作中的 input 参数对应的 Schema 类型可参考 [Input](/guides/topic-detail/generator/plugin/api/input.html)。
78
-
79
- #### addInputBefore
80
-
81
- 在指定的 input `key` 前添加问题。
82
-
83
- 例如:
84
-
85
- ```ts
86
- context.addInputBefore('packageManager', {
87
- type: 'object',
88
- properties: {
89
- language: {
90
- type: 'string',
91
- title: '开发语言',
92
- enum: [
93
- { label: 'TS', value: 'ts' },
94
- { label: 'ES6+', value: 'js' },
95
- ],
96
- },
97
- },
98
- });
99
- ```
100
-
101
- #### addInputAfter
102
-
103
- 在指定的 input `key` 后添加问题。
104
-
105
- 例如:
106
-
107
- ```ts
108
- context.addInputAfter('packageManager', {
109
- type: 'object',
110
- properties: {
111
- language: {
112
- type: 'string',
113
- title: '开发语言',
114
- enum: [
115
- { label: 'TS', value: 'ts' },
116
- { label: 'ES6+', value: 'js' },
117
- ],
118
- },
119
- },
120
- });
121
- ```
122
-
123
- :::info
124
- 1. 添加问题的 `key` 不能和 Modern.js 提供的工程方案自身的问题的 `key` 重复。
125
- 2. 添加问题 `addInputAfter` 的优先级高于 `addInputBefore`,当同时对一个 key 添加 After 问题和对其后一个key 添加 Before 问题时,After 问题会在 Before 之前。
126
- 3. 当需要在相同 `key` 前面或者后面添加多个问题时,可多次调用该方法,问题的顺序会按照调用顺序进行排列。
127
-
128
- :::
129
-
130
- #### setInput
131
-
132
- 设置指定 input `key` 的属性。
133
-
134
- 例如设置 `packageName` 的 `title` 属性:
135
-
136
- ```ts
137
- context.setInput('packageName', 'title', "展示名称");
138
- ```
139
-
140
- :::info
141
- 对于 Modern.js 工程方案提供的输入选项,只支持删除,不支持增加,增加会造成代码中的逻辑判断存在问题。
142
- :::
143
-
144
-
145
- #### setInputValue
146
-
147
- 设置指定 input `key` 的选项默认值。
148
-
149
- 例如设置 `packageManager` 的默认值:
150
-
151
- ```ts
152
- context.setInputValue({
153
- packageManager: 'npm',
154
- });
155
- ```
156
-
157
- :::info
158
- 设置完成后,该问题还是需要交互,只是会使用生成器插件配置的默认值。
159
- :::
160
-
161
- #### setDefaultConfig
162
-
163
- 设置指定 input `key` 的默认值。
164
-
165
- 例如设置 `packageManager` 的默认值:
166
-
167
- ```ts
168
- context.setDefaultConfig({
169
- packageManager: 'npm',
170
- });
171
- ```
172
-
173
- :::info
174
- 设置完成后,将不再展示对应问题,和 `@modern-js/create` 制定 `--config` 行为一致。不支持设置 `vertical` 和 `projectOrg`。
175
- :::
176
-
177
- #### setGitMessage
178
-
179
- 设置 Git 初始提交信息。Modern.js 默认 Git 初始化提交信息为 `feat: init`,通过该函数可以修改。
180
-
181
-
182
- ### 生命周期函数
183
-
184
- 生命周期函数比较复杂,将通过后面两节 [`onForged`](/guides/topic-detail/generator/plugin/api/onForged.html) 和 [`afterForged`](/guides/topic-detail/generator/plugin/api/afterForged.html) 分别介绍。
@@ -1,124 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # Input
6
-
7
- 生成器插件提供了 Input 的方式完成与用户的问题交互,使用 JSON Schema 的方式进行定义:
8
-
9
- 例如:
10
-
11
- ```js
12
- const schema = {
13
- type: 'object',
14
- properties: {
15
- language: {
16
- type: 'string',
17
- title: '开发语言',
18
- enum: [
19
- { label: 'TS', value: 'ts' },
20
- { label: 'ES6+', value: 'js' },
21
- ],
22
- },
23
- },
24
- };
25
- ```
26
-
27
- JSON Schema 的格式参考了开源的 [Formily](https://formilyjs.org/) Schema 的格式,下面将对支持的字段进行介绍:
28
-
29
- ## type
30
-
31
- 定义当前 Schema 类型,当前支持的类型为 `string`、`number` 和 `object`。字符串输入和下拉选项都需要使用 `string` 类型。 `object` 类型用于实现 Schema 之间嵌套,需要配和 `properties` 属性使用。
32
-
33
- ## title
34
-
35
- 定义当前 Schema 展示名称。
36
-
37
- ## default
38
-
39
- 定义当前 Schema 的默认值。
40
-
41
- ## enum
42
-
43
- 当前 Schema 为下列选项时,定义选项内容。
44
-
45
- 子项支持 `string` 或者 `{ label: string; value: string}` 类型,当下拉选项中值和展示值相同时,可直接使用 `string` 定义。
46
-
47
- 当需要表示多选选项时,设置 `default` 字段为 `[]` 即可。
48
-
49
- ## x-validator
50
-
51
- 当前 Schema 的校验规则。当 Schema 为输入类型时,在输入完成后会自动完成校验。
52
-
53
- 这里校验规则支持[ Formily 提供的校验规则](https://formilyjs.org/zh-CN/guide/advanced/validate),例如最大值为 5:
54
-
55
- ```js
56
- const schema = {
57
- type: 'object',
58
- properties: {
59
- max_5: {
60
- type: 'number',
61
- title: '最大值(>5报错)',
62
- 'x-validator': {
63
- maximum: 5,
64
- },
65
- },
66
- },
67
- };
68
- ```
69
-
70
- 也支持直接使用验证函数:
71
-
72
- ```js
73
- const schema = {
74
- type: 'object',
75
- properties: {
76
- path: {
77
- type: 'string',
78
- title: '只能包含数字和字母',
79
- 'x-validator': value => {
80
- if (!/^[0-9a-zA-Z]*$/g.test(value)) {
81
- return '格式不正确';
82
- }
83
- return '';
84
- },
85
- },
86
- },
87
- };
88
- ```
89
-
90
- ## x-reactions
91
-
92
- 使用 Schema 之间的联动,这里和[ Formily 联动规则](https://formilyjs.org/zh-CN/guide/advanced/linkages)完全相同。
93
-
94
- 例如:
95
-
96
- ```js
97
- const schema = {
98
- type: 'object',
99
- properties: {
100
- name: {
101
- type: 'string',
102
- title: '名称',
103
- },
104
- path: {
105
- type: 'string',
106
- title: '路径',
107
- 'x-reactions': [
108
- {
109
- dependencies: ['name'],
110
- fulfill: {
111
- state: {
112
- value: '{{$deps[0]}}',
113
- },
114
- },
115
- },
116
- ],
117
- },
118
- },
119
- };
120
- ```
121
-
122
- ## properties
123
-
124
- 组织当前 Schema 的结构,定义子表单。`properties` 为对象,`key` 为 Schema 关键字,`value` 为上述描述的 Schema 对象。