@modern-js/main-doc 0.0.0-next-1685502535286 → 0.0.0-next-1685530921784

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 (160) hide show
  1. package/CHANGELOG.md +2 -2
  2. package/docs/en/components/language-config.mdx +9 -0
  3. package/docs/en/components/package-manager.mdx +11 -0
  4. package/docs/en/guides/advanced-features/rspack-start.mdx +4 -4
  5. package/docs/en/guides/topic-detail/generator/create/_category_.json +4 -0
  6. package/docs/en/guides/topic-detail/generator/create/config.mdx +75 -0
  7. package/docs/en/guides/topic-detail/generator/create/option.md +151 -0
  8. package/docs/en/guides/topic-detail/generator/create/use.mdx +66 -0
  9. package/docs/en/guides/topic-detail/generator/new/_category_.json +4 -0
  10. package/docs/en/guides/topic-detail/generator/new/config.md +155 -0
  11. package/docs/en/guides/topic-detail/generator/new/option.md +67 -0
  12. package/docs/en/guides/topic-detail/generator/new/use.md +95 -0
  13. package/docs/en/guides/topic-detail/generator/plugin/_category_.json +2 -2
  14. package/docs/en/guides/topic-detail/generator/plugin/api/_category_.json +1 -1
  15. package/docs/en/guides/topic-detail/generator/plugin/api/afterForged.md +49 -0
  16. package/docs/en/guides/topic-detail/generator/plugin/api/context.md +184 -0
  17. package/docs/en/guides/topic-detail/generator/plugin/api/input.md +124 -0
  18. package/docs/en/guides/topic-detail/generator/plugin/api/onForged.md +310 -0
  19. package/docs/en/guides/topic-detail/generator/plugin/category.md +88 -0
  20. package/docs/en/guides/topic-detail/generator/plugin/context.md +104 -0
  21. package/docs/en/guides/topic-detail/generator/plugin/structure.md +106 -0
  22. package/docs/en/guides/topic-detail/generator/plugin/use.md +33 -0
  23. package/docs/zh/components/language-config.mdx +9 -0
  24. package/docs/zh/components/package-manager.mdx +11 -0
  25. package/docs/zh/guides/advanced-features/rspack-start.mdx +4 -4
  26. package/docs/zh/guides/topic-detail/generator/create/_category_.json +4 -0
  27. package/docs/zh/guides/topic-detail/generator/create/config.mdx +76 -0
  28. package/docs/zh/guides/topic-detail/generator/create/option.md +151 -0
  29. package/docs/zh/guides/topic-detail/generator/create/use.mdx +66 -0
  30. package/docs/zh/guides/topic-detail/generator/new/_category_.json +4 -0
  31. package/docs/zh/guides/topic-detail/generator/new/config.md +153 -0
  32. package/docs/zh/guides/topic-detail/generator/new/option.md +67 -0
  33. package/docs/zh/guides/topic-detail/generator/new/use.md +94 -0
  34. package/docs/zh/guides/topic-detail/generator/plugin/_category_.json +2 -2
  35. package/docs/zh/guides/topic-detail/generator/plugin/api/_category_.json +1 -1
  36. package/docs/zh/guides/topic-detail/generator/plugin/api/afterForged.md +50 -0
  37. package/docs/zh/guides/topic-detail/generator/plugin/api/context.md +184 -0
  38. package/docs/zh/guides/topic-detail/generator/plugin/api/input.md +124 -0
  39. package/docs/zh/guides/topic-detail/generator/plugin/api/onForged.md +310 -0
  40. package/docs/zh/guides/topic-detail/generator/plugin/category.md +93 -0
  41. package/docs/zh/guides/topic-detail/generator/plugin/context.md +105 -0
  42. package/docs/zh/guides/topic-detail/generator/plugin/structure.md +106 -0
  43. package/docs/zh/guides/topic-detail/generator/plugin/use.md +33 -0
  44. package/package.json +5 -5
  45. package/docs/en/guides/topic-detail/generator/codesmith/_category_.json +0 -4
  46. package/docs/en/guides/topic-detail/generator/codesmith/api/_category_.json +0 -4
  47. package/docs/en/guides/topic-detail/generator/codesmith/api/app.mdx +0 -152
  48. package/docs/en/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -56
  49. package/docs/en/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -54
  50. package/docs/en/guides/topic-detail/generator/codesmith/api/git.mdx +0 -50
  51. package/docs/en/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -57
  52. package/docs/en/guides/topic-detail/generator/codesmith/api/json.mdx +0 -56
  53. package/docs/en/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -48
  54. package/docs/en/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
  55. package/docs/en/guides/topic-detail/generator/codesmith/introduce.mdx +0 -47
  56. package/docs/en/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -47
  57. package/docs/en/guides/topic-detail/generator/codesmith/structure.mdx +0 -89
  58. package/docs/en/guides/topic-detail/generator/config/_category_.json +0 -4
  59. package/docs/en/guides/topic-detail/generator/config/app.mdx +0 -82
  60. package/docs/en/guides/topic-detail/generator/config/common.mdx +0 -100
  61. package/docs/en/guides/topic-detail/generator/config/module.mdx +0 -42
  62. package/docs/en/guides/topic-detail/generator/config/monorepo.mdx +0 -28
  63. package/docs/en/guides/topic-detail/generator/plugin/abstract.mdx +0 -23
  64. package/docs/en/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -4
  65. package/docs/en/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -52
  66. package/docs/en/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -26
  67. package/docs/en/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -58
  68. package/docs/en/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -26
  69. package/docs/en/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -39
  70. package/docs/en/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -24
  71. package/docs/en/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -24
  72. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -54
  73. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -27
  74. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -33
  75. package/docs/en/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -4
  76. package/docs/en/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -20
  77. package/docs/en/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -16
  78. package/docs/en/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -16
  79. package/docs/en/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -4
  80. package/docs/en/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -35
  81. package/docs/en/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -35
  82. package/docs/en/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -4
  83. package/docs/en/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -22
  84. package/docs/en/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -17
  85. package/docs/en/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -22
  86. package/docs/en/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -4
  87. package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -55
  88. package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -55
  89. package/docs/en/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -43
  90. package/docs/en/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -31
  91. package/docs/en/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -65
  92. package/docs/en/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -90
  93. package/docs/en/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -4
  94. package/docs/en/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -33
  95. package/docs/en/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -35
  96. package/docs/en/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -44
  97. package/docs/en/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -15
  98. package/docs/en/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -4
  99. package/docs/en/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -18
  100. package/docs/en/guides/topic-detail/generator/plugin/develop.mdx +0 -125
  101. package/docs/en/guides/topic-detail/generator/plugin/use.mdx +0 -61
  102. package/docs/en/guides/topic-detail/generator/project.mdx +0 -118
  103. package/docs/zh/guides/topic-detail/generator/codesmith/_category_.json +0 -4
  104. package/docs/zh/guides/topic-detail/generator/codesmith/api/_category_.json +0 -4
  105. package/docs/zh/guides/topic-detail/generator/codesmith/api/app.mdx +0 -152
  106. package/docs/zh/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -56
  107. package/docs/zh/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -54
  108. package/docs/zh/guides/topic-detail/generator/codesmith/api/git.mdx +0 -49
  109. package/docs/zh/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -56
  110. package/docs/zh/guides/topic-detail/generator/codesmith/api/json.mdx +0 -56
  111. package/docs/zh/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -47
  112. package/docs/zh/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
  113. package/docs/zh/guides/topic-detail/generator/codesmith/introduce.mdx +0 -59
  114. package/docs/zh/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -47
  115. package/docs/zh/guides/topic-detail/generator/codesmith/structure.mdx +0 -89
  116. package/docs/zh/guides/topic-detail/generator/config/_category_.json +0 -4
  117. package/docs/zh/guides/topic-detail/generator/config/app.mdx +0 -82
  118. package/docs/zh/guides/topic-detail/generator/config/common.mdx +0 -100
  119. package/docs/zh/guides/topic-detail/generator/config/module.mdx +0 -42
  120. package/docs/zh/guides/topic-detail/generator/config/monorepo.mdx +0 -28
  121. package/docs/zh/guides/topic-detail/generator/plugin/abstract.mdx +0 -23
  122. package/docs/zh/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -4
  123. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -52
  124. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -26
  125. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -55
  126. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -26
  127. package/docs/zh/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -39
  128. package/docs/zh/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -24
  129. package/docs/zh/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -24
  130. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -54
  131. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -27
  132. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -33
  133. package/docs/zh/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -4
  134. package/docs/zh/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -20
  135. package/docs/zh/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -16
  136. package/docs/zh/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -16
  137. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -4
  138. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -35
  139. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -35
  140. package/docs/zh/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -4
  141. package/docs/zh/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -22
  142. package/docs/zh/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -17
  143. package/docs/zh/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -22
  144. package/docs/zh/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -4
  145. package/docs/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -57
  146. package/docs/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -56
  147. package/docs/zh/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -43
  148. package/docs/zh/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -29
  149. package/docs/zh/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -65
  150. package/docs/zh/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -92
  151. package/docs/zh/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -4
  152. package/docs/zh/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -33
  153. package/docs/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -35
  154. package/docs/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -44
  155. package/docs/zh/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -15
  156. package/docs/zh/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -4
  157. package/docs/zh/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -16
  158. package/docs/zh/guides/topic-detail/generator/plugin/develop.mdx +0 -125
  159. package/docs/zh/guides/topic-detail/generator/plugin/use.mdx +0 -61
  160. package/docs/zh/guides/topic-detail/generator/project.mdx +0 -118
@@ -1,54 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # @modern-js/codesmith-api-fs
6
-
7
- 微生成器中文件操作的 API 封装,提供渲染单个模板文件和文件夹的方法。FsAPI 通常用于处理二进制文件或者不能使用 handlebars、ejs 处理的模板文件。
8
-
9
- ## 使用姿势
10
-
11
- ```ts
12
- import { FsAPI } from '@modern-js/codesmith-api-fs';
13
-
14
- export default async (context: GeneratorContext, generator: GeneratorCore) => {
15
- const fsApi = new FsAPI(generator);
16
- await fsApi.renderFile(
17
- material.get('templates/a.js'),
18
- target: 'b.js'
19
- );
20
- }
21
- ```
22
-
23
- - 创建 FsAPI 实例,参数为微生成器函数参数的 generator,具体介绍请看微生成器项目组成 。
24
- - 调用其实例上 API 即可。
25
-
26
- ## API
27
-
28
- ### renderFile
29
-
30
- 渲染单个模板文件。
31
-
32
- 参数:
33
-
34
- - resource: `FsResource` 模板文件资源,通过 `context.materials.get(<filename>)` 使用。
35
- - target: `string` 目标文件路径名称。
36
-
37
- ### renderDir
38
-
39
- 渲染模板文件夹。
40
-
41
- 参数:
42
-
43
- - material: `FsMaterial` 当前微生成器执行的 material 上下文。
44
- - findGlob: `string` 模板文件匹配正则。
45
- - target: `(globMatch: string) => string` 目标文件路径生成函数,参数为 `resourceKey。`
46
- - options?: `RenderTemplateDirOptions` glob 查找文件配置,具体函数可查看这里 [glob](https://www.npmjs.com/package/glob)。
47
-
48
- ```ts
49
- type RenderTemplateDirOptions = {
50
- nodir?: boolean;
51
- dot?: boolean;
52
- ignore?: string | readonly string[];
53
- };
54
- ```
@@ -1,49 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # @modern-js/codesmith-api-git
6
-
7
- 微生成器中使用 git 相关操作的 API 封装,提供判断 git 仓库,初始化及提交代码等方法。
8
-
9
- ## 使用姿势
10
-
11
- ```ts
12
- import { GitAPI } from '@modern-js/codesmith-api-git';
13
-
14
- export default async (context: GeneratorContext, generator: GeneratorCore) => {
15
- const gitApi = new GitAPI(generatorCore, generatorContext);
16
- await gitApi.initGitRepo();
17
- };
18
- ```
19
-
20
- - 创建 GitAPI 实例,参数和微生成器函数参数一致,为 context 和 generator,具体介绍请看微生成器项目组成
21
- - 调用其实例上 API 即可。
22
-
23
- ## API
24
-
25
- ### isInGitRepo
26
-
27
- 当前目录是否为 git 仓库。
28
-
29
- 参数:
30
-
31
- - cwd?: `string` git 命令的执行目录,默认为微生成器 `outputPath`。
32
-
33
- ### initGitRepo
34
-
35
- 初始化为 git 仓库。init 的默认分支名可通过生成器 config 中的 defaultBranch 进行配置。
36
-
37
- 参数:
38
-
39
- - cwd?: `string` git 命令的执行目录,默认为微生成器 `outputPath`。
40
- - force?: `boolean` 当前目录已经为 git 仓库时使用该参数会强制执行 git init。
41
-
42
- ### addAndCommit
43
-
44
- 执行 `git add .` 和 `git commit` 提交当前变更。
45
-
46
- 参数:
47
-
48
- - commitMessage: `string` commit 信息。
49
- - cwd?: `string` git 命令的执行目录,默认为微生成器 `outputPath`。
@@ -1,56 +0,0 @@
1
- ---
2
- sidebar_position: 5
3
- ---
4
-
5
- # @modern-js/codesmith-api-handlebars
6
-
7
- 微生成器中使用 [handlebars](https://handlebarsjs.com/) 进行文件操作的 API 封装,提供渲染单个模板文件和文件夹的方法。
8
-
9
- ## 使用姿势
10
-
11
- ```ts
12
- import { HandlebarsAPI } from '@modern-js/codesmith-api-handlebars';
13
-
14
- export default async (context: GeneratorContext, generator: GeneratorCore) => {
15
- const handlebarApi = new HandlebarsAPI(generator);
16
- await handlebarsAPI.renderTemplate(
17
- material.get('templates/a.js'),
18
- target: 'b.js',
19
- { data: "data" }
20
- );
21
- }
22
- ```
23
-
24
- - 创建 HandlebarsAPI 实例,参数为微生成器函数参数的 generator,具体介绍请看微生成器项目组成 。
25
- - 调用其实例上 API 即可。
26
-
27
- ## API
28
-
29
- ### renderTemplate
30
-
31
- 渲染单个模板文件。
32
-
33
- 参数:
34
-
35
- - templateResource: `FsResource` 模板文件资源,通过 `context.materials.get(<filename>)` 使用。
36
- - target: `string` 目标文件路径名称。
37
- - parameters?: `Record<string, string>` 渲染参数。
38
-
39
- ### renderTemplateDir
40
-
41
- 渲染模板文件夹。
42
-
43
- 参数:
44
-
45
- - material: `FsMaterial` 当前微生成器执行的 material 上下文。
46
- - findGlob: `string` 模板文件匹配正则。
47
- - target: `(globMatch: string) => string` 目标文件路径生成函数,参数为 `resourceKey。`
48
- - options?: `RenderTemplateDirOptions` glob 查找文件配置,具体函数可查看这里 [glob](https://www.npmjs.com/package/glob)。
49
-
50
- ```ts
51
- type RenderTemplateDirOptions = {
52
- nodir?: boolean;
53
- dot?: boolean;
54
- ignore?: string | readonly string[];
55
- };
56
- ```
@@ -1,56 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # @modern-js/codesmith-api-json
6
-
7
- 微生成器中 JSON API 封装,提供常见的 JSON 文件操作方法。
8
-
9
- ## 使用姿势
10
-
11
- ```ts
12
- import { JsonAPI } from '@modern-js/codesmith-api-json';
13
-
14
- export default async (context: GeneratorContext, generator: GeneratorCore) => {
15
- const jsonAPI = new JsonAPI(generator);
16
- await jsonAPI.update(context.materials.default.get('package.json'), {
17
- query: {},
18
- update: {
19
- $set: {
20
- 'dependencies.@modern-js/plugin-bff': `^2.0.0`,
21
- },
22
- },
23
- });
24
- };
25
- ```
26
-
27
- - 创建 JsonAPI 实例,参数为微生成器函数参数的 generator,具体介绍请看[微生成器项目组成](/guides/topic-detail/generator/codesmith/structure)。
28
- - 调用其实例上 API 即可。
29
-
30
- ## API
31
-
32
- ### get
33
-
34
- 获取 JSON 文件内容。
35
-
36
- 参数:
37
-
38
- - resource: `FsResource`,文件资源,通过 `context.materials.default.get(<filename>)` 获取。
39
-
40
- ### extend
41
-
42
- 合并对象至 JSON 文件。
43
-
44
- 参数:
45
-
46
- - resource: `FsResource` 通过 `context.materials.default.get(<filename>)` 获取。
47
- - obj: `Record<string, any>` 需合并对象。
48
-
49
- ### update
50
-
51
- 更新对象字段至 JSON 文件。
52
-
53
- 参数:
54
-
55
- - resource: `FsResource` 通过 `context.materials.default.get(<filename>)` 获取。
56
- - operation: `{ query: Record<string, any>; update: Record<string, any> }` 更新操作,详细使用姿势查看 [declaration-update](https://www.npmjs.com/package/declaration-update)。
@@ -1,47 +0,0 @@
1
- ---
2
- sidebar_position: 7
3
- ---
4
-
5
- # @modern-js/codesmith-api-npm
6
-
7
- 微生成器中 NPM API 封装,提供常见的 NPM 不同包管理工具安装依赖的方法。
8
-
9
- ## 使用姿势
10
-
11
- ```ts
12
- import { NpmAPI } from '@modern-js/codesmith-api-npm';
13
-
14
- export default async (context: GeneratorContext, generator: GeneratorCore) => {
15
- const npmApi = new NpmAPI(generator);
16
- await npmApi.pnpmInstall();
17
- };
18
- ```
19
-
20
- - 创建 NpmAPI 实例,参数为微生成器函数参数的 generator,具体介绍请看微生成器项目组成 。
21
- - 调用其实例上 API 即可。
22
-
23
- ## API
24
-
25
- ### npmInstall
26
-
27
- 使用 npm 安装依赖。
28
-
29
- 参数:
30
-
31
- - cwd?: `string` install 命令的执行目录,默认为微生成器 `outputPath`。
32
-
33
- ### yarnInstall
34
-
35
- 使用 yarn 安装依赖。
36
-
37
- 参数:
38
-
39
- - cwd?: `string` install 命令的执行目录,默认为微生成器 `outputPath`。
40
-
41
- ### pnpmInstall
42
-
43
- 使用 pnpm 安装依赖。
44
-
45
- 参数:
46
-
47
- - cwd?: `string` install 命令的执行目录,默认为微生成器 `outputPath`。
@@ -1,53 +0,0 @@
1
- ---
2
- sidebar_position: 3
3
- ---
4
-
5
- # 开发微生成器项目
6
-
7
- ## 创建项目
8
-
9
- Modern.js 提供了创建微生成器项目的微生成器,可以直接通过以下命令创建微生成器项目:
10
-
11
- ```bash
12
- $ mkdir <projectDir>
13
- $ npx @modern-js/codesmith-cli @modern-js/generator-generator
14
-
15
- ? 请填写项目名称 <generatorName>
16
- ? 请选择包管理工具 pnpm
17
- ? 请选择开发语言 TS
18
- ```
19
-
20
- ## 添加模板文件
21
-
22
- 在项目目录的 templates 文件夹,用于存放生成器需要的模板文件,如果没有模板文件,该步骤可跳过。
23
-
24
- ## 开发生成器核心逻辑
25
-
26
- 默认生成的的项目中,已经实现直接拷贝 templates 目录文件至目标项目,可直接在 `handleTemplateFile` 函数中完成生成器的核心逻辑开发。
27
-
28
- ## 测试微生成器
29
-
30
- 微生成器开发完成后,需要执行 `pnpm run build` 对代码进行编译,在开发模式下可以使用 `pnpm run build --watch`
31
-
32
- codesmith 提供了 cli 工具用于运行和测试微生成器,在目标目录执行使用如下命令执行即可:
33
-
34
- ```bash
35
- npx @modern-js/codesmith-cli <generatorPath>
36
- ```
37
-
38
- 其中 generatorPath 为上述生成器项目的绝对路径。
39
-
40
- ## 运行微生成器
41
-
42
- 生成器发布 npm 包之后,使用如下命令执行:
43
-
44
- ```bash
45
- npx @modern-js/codesmith-cli <generatorName>
46
- ```
47
-
48
- 其中 generatorName 为生成器包名。
49
-
50
- :::info
51
- `@modern-js/create` 也支持运行微生成器,可以使用 `npx @modern-js/create@latest --generator <generatorName>` 运行自定义的微生成器。
52
-
53
- :::
@@ -1,59 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # 什么是微生成器
6
-
7
- Modern.js 提供了 `@modern-js/create` 工具和 `new` 命令分别用于初始化创建项目和提供开启一些插件功能的能力,这些工具都是基于微生成器也就是 codesmith 实现的。
8
-
9
- codesmith 致力于提供一套微生成器的运行机制,并维护微生成器执行过程中的上下文信息,从而实现各种基于文件、命令等操作,完成复杂的操作。
10
-
11
- codesmith 还将常用的方法进行了封装,可以直接使用其提供的 API 函数,可以更方便的实现自身的微生成器。
12
-
13
- ## 核心概念
14
-
15
- ### GeneratorCore
16
-
17
- GeneratorCore 是 codesmith 运行生成器的核心,维护这生成器执行过程中的上下文及运行方法。
18
-
19
- ```ts
20
- class GeneratorCore {
21
- logger: ILogger; // 日志
22
- materialsManager: MaterialsManager; // 资源
23
- outputPath: string; // 输出路径
24
- output: {
25
- // 输出方法
26
- fs: (
27
- file: string | number,
28
- data: any,
29
- options?: fs.WriteFileOptions | string,
30
- ) => Promise<void>;
31
- };
32
- _context: GeneratorContext; // 上下文信息
33
- addMaterial(key: string, material: FsMaterial): void; // 添加资源
34
- runGenerator(
35
- generator: string,
36
- config?: Record<string, unknown>,
37
- ): Promise<void>; // 运行生成器
38
- runSubGenerator(
39
- subGenerator: string,
40
- relativePwdPath?: string,
41
- config?: Record<string, any>,
42
- ): Promise<void>; // 运行子生成器
43
- }
44
- ```
45
-
46
- ### Materials
47
-
48
- 微生成器资源信息,目前只包含文件资源(fsMaterials),通过该字段可以获取到生成器执行过程中的 template 资源,并通过 API 对其进行操作。
49
-
50
- ```ts
51
- class MaterialsManager {
52
- materialMap: {
53
- // 资源映射关系
54
- [materialUri: string]: FsMaterial;
55
- };
56
- loadLocalGenerator(generator: string): Promise<FsMaterial>; // 加载本地生成器资源(绝对路径)
57
- loadRemoteGenerator(generator: string): Promise<FsMaterial>; // 加载远程生成器资源(npm 包)
58
- }
59
- ```
@@ -1,47 +0,0 @@
1
- ---
2
- sidebar_position: 4
3
- ---
4
-
5
- # 使用 JS 代码执行微生成器
6
-
7
- 除了使用 cli 的方式执行微生成器,我们免不了需要在代码中执行微生成器,下面就介绍在 js 代码中如何执行微生成器。
8
-
9
- ## 安装 codesmith 依赖
10
-
11
- ```bash
12
- pnpm add @modern-js/codesmith
13
- ```
14
-
15
- ## 创建 codesmith 实例
16
-
17
- ```ts
18
- import { CodeSmith, Logger } from '@modern-js/codesmith';
19
-
20
- const smith = new CodeSmith({
21
- debug: false, // 是否开启 debug 模式,为 true 时会展示生成器中的 debug 信息
22
- });
23
- ```
24
-
25
- ## 调用 forge 方法执行生成器
26
-
27
- ```ts
28
- type RunnerTask = Array<{
29
- name: string;
30
- config: Record<string, any>;
31
- }>;
32
-
33
- const task: RunnerTask = [
34
- {
35
- name: 'generator', // 生成器 npm 包名称
36
- config: {}, // 生成器执行的默认配置
37
- },
38
- ];
39
-
40
- await smith.forge({
41
- tasks: task.map(runner => ({
42
- generator: runner.name,
43
- config: runner.config,
44
- })),
45
- pwd: '.', // 生成器执行路径
46
- });
47
- ```
@@ -1,89 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # 微生成器的组成
6
-
7
- 一个微生成器项目为一个模块项目或者一个 Npm 包,包中包含几个基本部分:
8
-
9
- ## package.json
10
-
11
- npm 包描述信息,包含 name、version、main 等字段。
12
-
13
- ## 入口文件
14
-
15
- 上述 main 字段对应的 js 文件。文件为默认导出一个生成器函数,函数格式如下:
16
-
17
- ```ts
18
- export default async (
19
- context: GeneratorContext,
20
- generator: GeneratorCore,
21
- ) => {};
22
- ```
23
-
24
- 该函数参数为 context 和 generator:
25
-
26
- ### context
27
-
28
- context 提供 codesmith 运行时维护的上下文信息。其类型定义为:
29
-
30
- ```ts
31
- interface GeneratorContext {
32
- materials: Record<string, FsMaterial>; // 资源
33
- config: Record<string, any>; // 用户 config 配置
34
- data?: Record<string, any>; // 用户 data 配置
35
- current: { material: FsMaterial } | null; // 当前生成器运行可获取的文件资源
36
- [key: string]: any; // 其他补充字段
37
- }
38
- ```
39
-
40
- materials 是 codesmith 的抽象文件系统,维护这生成器名称和可操作文件的映射关系。
41
-
42
- materials 中还维护这一个 default 的映射关系,用于维护当前生成器执行目录的资源信息,通过该字段可以对目标项目资源进行操作。
43
-
44
- 例如当需要修改当前项目的 `package.json` 中的字段:
45
-
46
- ```ts
47
- const resource = context.materials.default.get(
48
- path.join(appDir, 'package.json'),
49
- );
50
- ```
51
-
52
- 将获取到的 resource 传递给 codesmith 提供的 JSON API 即可实现 json 操作。
53
-
54
- GeneratorContext 的 current 字段上维护这当前运行的生成器文件资源,可以通过 `current.material` 获取到当前的 `FsMaterial`.
55
-
56
- FsMaterial 中提供了 get 方法用于获取资源文件并将资源文件传给生成器支持的 API 即可对模板文件进行处理。
57
-
58
- 例如:
59
-
60
- ```ts
61
- const resourceMap = await material.find('templates/**/*');
62
- ```
63
-
64
- 通过上述方式可以获取到生成器中符合 `templates/**/*` 规则的所有模板文件,遍历该对象即可对资源文件进行操作。
65
-
66
- ### generator
67
-
68
- generator 提供 codesmith 运行时的函数方法。其类型定义为:
69
-
70
- ```ts
71
- interface GeneratorCore {
72
- logger: Logger; // log 函数,支持 info、warning、debug、error、verbose、stream
73
- outputPath: string; // 输出文件路径
74
- output: {
75
- fs: (file: string | number, data: any, options?: string | fs.WriteFileOptions | undefined) => Promise<void>
76
- }; // 写文件方法
77
- runSubGenerator: (subGenerator: string, relativePwdPath?: string | undefined, config?: Record<string, any> | undefined): Promise<void> // 运行子生成器
78
- }
79
- ```
80
-
81
- 其中 outputPath 和 context 中的 `materials.default` 指向相同的目录,outputPath 用于直接计算目标路径并操作,`materials.default` 用于获取资源文件。
82
-
83
- runSubGenerator 提供了在一个微生成器中去运行其他微生成器的方法,该方法将自动更新和维护新的 context 上下文信息。
84
-
85
- ## Template 文件
86
-
87
- 生成器模板文件。
88
-
89
- 推荐在项目根目录创建一个 templates 目录,用于维护该微生成器的模板文件,微生成器执行过程中只能使用自身的模板文件,对于需要共用的模板文件,建议通过共用子生成器实现。
@@ -1,4 +0,0 @@
1
- {
2
- "label": "工程方案配置",
3
- "position": 3
4
- }
@@ -1,82 +0,0 @@
1
- ---
2
- sidebar_position: 2
3
- ---
4
-
5
- # Web 应用
6
-
7
- ## 项目创建
8
-
9
- 创建项目时配置,`@modern-js/create` 使用 `--config` 参数时使用的配置,也是在生成器插件中修改和添加 input 时使用的配置。
10
-
11
- 应用项目创建参数都为[通用配置](/guides/topic-detail/generator/config/common)。
12
-
13
- ## New 命令
14
-
15
- 应用项目中 new 命令配置, 可以在执行 new 命令时通过 `--config` 参数配置,也可在生成器插件中创建元素和启用功能时使用。
16
-
17
- ### actionType
18
-
19
- New 命令的操作类型(actionType),类型支持两种:
20
-
21
- - element 创建工程元素
22
-
23
- - function 启用功能
24
-
25
- :::info
26
- 在生成器插件中使用启用功能和创建元素时不需要该参数,生成器插件中自动添加该参数。
27
-
28
- :::
29
-
30
- ### element
31
-
32
- 元素名称(element),支持两个选项:
33
-
34
- - 创建应用入口(entry)
35
-
36
- - 新建自定义 Web Serve 源码目录(server)
37
-
38
- 入口还需要配置具体的配合使用,介绍如下:
39
-
40
- #### name
41
-
42
- 入口名称(name), 字符串类型。
43
-
44
- ### function
45
-
46
- 可选功能名称(function),支持如下选项:
47
-
48
- - Tailwind CSS(tailwindcss)
49
-
50
- - BFF(bff)
51
-
52
- - SSG(ssg)
53
-
54
- - 微前端(micro_frontend)
55
-
56
- - 单元测试(test)
57
-
58
- - Storybook(mwa_storybook)
59
-
60
- - 启用「基于 UA 的 Polyfill」功能(polyfill)
61
-
62
- - 启用「全局代理」(proxy)
63
-
64
- `bff` 和还需要配置具体的配合使用,介绍如下:
65
-
66
- #### BFF 相关参数
67
-
68
- ##### bffType
69
-
70
- BFF 类型(bffType),支持两个选项:
71
-
72
- - 函数模式(function)
73
-
74
- - 框架模式(framework)
75
-
76
- ##### framework
77
-
78
- BFF 运行时框架(framework),支持两个选项:
79
-
80
- - Express(express)
81
-
82
- - Koa(koa)
@@ -1,100 +0,0 @@
1
- ---
2
- sidebar_position: 1
3
- ---
4
-
5
- # 通用配置
6
-
7
- ### solution
8
-
9
- 工程方案类型(solution),选项如下:
10
-
11
- - 应用(mwa)
12
-
13
- - 模块(module)
14
-
15
- - Monorepo
16
-
17
- :::info
18
- solution 配置只能在 `@modern-js/create` 的 `--config` 参数中使用,不能在生成器插件中通过设置输入默认值的方式使用。
19
-
20
- :::
21
-
22
- ### scenes
23
-
24
- 项目场景(scenes),当使用创建工程方案场景类型的生成器插件时,该值为对应生成器插件的 key 值。
25
-
26
- :::info
27
- scenes 配置只能在 `@modern-js/create` 的 `--config` 参数中使用,不能在生成器插件中通过设置输入默认值的方式使用。
28
-
29
- :::
30
-
31
- ### language
32
-
33
- 开发语言(language),选项如下:
34
-
35
- - TS(ts)
36
-
37
- - ES6+(js)
38
-
39
- ### packageManager
40
-
41
- 包管理工具(packageManager),选项如下:
42
-
43
- - pnpm(pnpm)
44
-
45
- - Yarn(yarn)
46
-
47
- :::info
48
- 在生成器插件创建工程方案场景的自定义类型(custom)中,默认只提供了 `packageManager` 配置。
49
-
50
- :::
51
-
52
- ## 其他配置
53
-
54
- ### noNeedInstall
55
-
56
- - **类型:** `boolean`
57
- - **默认值:** `false`
58
-
59
- 是否跳过依赖安装。
60
-
61
- ### noNeedGit
62
-
63
- - **类型:** `boolean`
64
- - **默认值:** `false`
65
-
66
- 是否跳过 git 初始化和提交初始 commit。
67
-
68
- ### successInfo
69
-
70
- - **类型:** `string`
71
- - **默认值:** 不同工程方案的命令操作提示
72
-
73
- 自定义创建项目成功的提示信息。
74
-
75
- ### isMonorepoSubProject
76
-
77
- - **类型:** `boolean`
78
- - **默认值:** `false`
79
-
80
- 是否为 Monorepo 子项目。
81
-
82
- ### isTest
83
-
84
- - **类型:** `boolean`
85
- - **默认值:** `false`
86
-
87
- 作用于应用项目,标识是否为测试项目。
88
-
89
- - `true`: 创建到路径 `examples/`
90
- - `false`: 创建到路径 `apps/`
91
-
92
- ### isPublic
93
-
94
- - **类型:** `boolean`
95
- - **默认值:** `false`
96
-
97
- 作用于模块 (Module) 项目,标识是否需要对外发布。
98
-
99
- - `true`: 创建到路径 `packages/`
100
- - `false`: 创建到路径 `features/`