@modern-js/main-doc 2.21.0 → 2.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/docs/en/apis/app/commands.mdx +5 -5
  3. package/docs/en/apis/app/hooks/api/api.mdx +80 -0
  4. package/docs/en/apis/app/hooks/api/app.mdx +12 -0
  5. package/docs/en/apis/app/hooks/api/lambda.mdx +57 -0
  6. package/docs/en/apis/app/hooks/api/test.mdx +1 -1
  7. package/docs/en/apis/app/hooks/config/html.mdx +2 -2
  8. package/docs/en/apis/app/hooks/config/icon.mdx +19 -19
  9. package/docs/en/apis/app/hooks/config/mock.mdx +1 -1
  10. package/docs/en/apis/app/hooks/config/public.mdx +10 -10
  11. package/docs/en/apis/app/hooks/config/storybook.mdx +3 -3
  12. package/docs/en/apis/app/hooks/config/upload.mdx +13 -13
  13. package/docs/en/apis/app/hooks/modern-config.mdx +4 -4
  14. package/docs/en/apis/app/hooks/server/index_.mdx +2 -9
  15. package/docs/en/apis/app/hooks/server/test.mdx +5 -2
  16. package/docs/en/apis/app/hooks/shared.mdx +1 -1
  17. package/docs/en/apis/app/hooks/src/app.mdx +17 -27
  18. package/docs/en/apis/app/hooks/src/index_.mdx +6 -6
  19. package/docs/en/apis/app/hooks/src/pages.mdx +41 -37
  20. package/docs/en/apis/app/hooks/src/routes.mdx +16 -36
  21. package/docs/en/apis/app/hooks/src/server.mdx +1 -1
  22. package/docs/en/apis/app/hooks/src/stories.mdx +6 -3
  23. package/docs/en/apis/app/hooks/src/test.mdx +4 -3
  24. package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +5 -1
  25. package/docs/en/apis/app/runtime/web-server/hook.mdx +2 -2
  26. package/docs/en/apis/app/runtime/web-server/middleware.mdx +2 -2
  27. package/docs/en/components/global-proxy.mdx +7 -7
  28. package/docs/en/components/init-app.mdx +3 -3
  29. package/docs/en/components/init-rspack-app.mdx +4 -4
  30. package/docs/en/components/language-config.mdx +9 -0
  31. package/docs/en/components/package-manager.mdx +11 -0
  32. package/docs/en/components/ua-polyfill.mdx +2 -2
  33. package/docs/en/configure/app/source/config-dir.mdx +1 -1
  34. package/docs/en/configure/app/source/design-system.mdx +67 -67
  35. package/docs/en/configure/app/source/disable-default-entries.mdx +6 -5
  36. package/docs/en/configure/app/source/disable-entry-dirs.mdx +5 -5
  37. package/docs/en/configure/app/source/enable-async-entry.mdx +9 -9
  38. package/docs/en/configure/app/source/entries-dir.mdx +3 -3
  39. package/docs/en/configure/app/source/entries.mdx +21 -19
  40. package/docs/en/configure/app/tools/swc.mdx +2 -2
  41. package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -2
  42. package/docs/en/guides/advanced-features/bff/function.mdx +4 -4
  43. package/docs/en/guides/advanced-features/bff/type.mdx +5 -5
  44. package/docs/en/guides/advanced-features/rspack-start.mdx +6 -6
  45. package/docs/en/guides/advanced-features/ssg.mdx +2 -2
  46. package/docs/en/guides/advanced-features/testing.mdx +2 -2
  47. package/docs/en/guides/advanced-features/web-server.mdx +2 -2
  48. package/docs/en/guides/basic-features/css.mdx +2 -2
  49. package/docs/en/guides/basic-features/mock.mdx +1 -1
  50. package/docs/en/guides/basic-features/proxy.mdx +4 -5
  51. package/docs/en/guides/basic-features/routes.mdx +11 -7
  52. package/docs/en/guides/concept/entries.mdx +3 -3
  53. package/docs/en/guides/topic-detail/generator/create/_category_.json +4 -0
  54. package/docs/en/guides/topic-detail/generator/create/config.mdx +75 -0
  55. package/docs/en/guides/topic-detail/generator/create/option.md +151 -0
  56. package/docs/en/guides/topic-detail/generator/create/use.mdx +66 -0
  57. package/docs/en/guides/topic-detail/generator/new/_category_.json +4 -0
  58. package/docs/en/guides/topic-detail/generator/new/config.md +155 -0
  59. package/docs/en/guides/topic-detail/generator/new/option.md +67 -0
  60. package/docs/en/guides/topic-detail/generator/new/use.md +95 -0
  61. package/docs/en/guides/topic-detail/generator/plugin/_category_.json +2 -2
  62. package/docs/en/guides/topic-detail/generator/plugin/api/_category_.json +1 -1
  63. package/docs/en/guides/topic-detail/generator/plugin/api/afterForged.md +49 -0
  64. package/docs/en/guides/topic-detail/generator/plugin/api/context.md +184 -0
  65. package/docs/en/guides/topic-detail/generator/plugin/api/input.md +124 -0
  66. package/docs/en/guides/topic-detail/generator/plugin/api/onForged.md +310 -0
  67. package/docs/en/guides/topic-detail/generator/plugin/category.md +88 -0
  68. package/docs/en/guides/topic-detail/generator/plugin/context.md +104 -0
  69. package/docs/en/guides/topic-detail/generator/plugin/structure.md +106 -0
  70. package/docs/en/guides/topic-detail/generator/plugin/use.md +33 -0
  71. package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +8 -8
  72. package/docs/en/tutorials/first-app/c03-css.mdx +2 -2
  73. package/docs/en/tutorials/first-app/c08-entries.mdx +3 -3
  74. package/docs/zh/apis/app/commands.mdx +3 -3
  75. package/docs/zh/apis/app/hooks/api/{functions/api.mdx → api.mdx} +4 -4
  76. package/docs/zh/apis/app/hooks/api/app.mdx +12 -0
  77. package/docs/zh/apis/app/hooks/api/{framework/lambda.mdx → lambda.mdx} +5 -5
  78. package/docs/zh/apis/app/hooks/api/test.mdx +3 -3
  79. package/docs/zh/apis/app/hooks/config/icon.mdx +15 -15
  80. package/docs/zh/apis/app/hooks/config/mock.mdx +1 -1
  81. package/docs/zh/apis/app/hooks/config/public.mdx +3 -3
  82. package/docs/zh/apis/app/hooks/config/upload.mdx +1 -1
  83. package/docs/zh/apis/app/hooks/modern-config.mdx +3 -3
  84. package/docs/zh/apis/app/hooks/server/index_.mdx +1 -6
  85. package/docs/zh/apis/app/hooks/shared.mdx +1 -1
  86. package/docs/zh/apis/app/hooks/src/app.mdx +15 -25
  87. package/docs/zh/apis/app/hooks/src/index_.mdx +6 -6
  88. package/docs/zh/apis/app/hooks/src/pages.mdx +7 -3
  89. package/docs/zh/apis/app/hooks/src/routes.mdx +4 -4
  90. package/docs/zh/apis/app/hooks/src/stories.mdx +1 -1
  91. package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +5 -1
  92. package/docs/zh/components/language-config.mdx +9 -0
  93. package/docs/zh/components/package-manager.mdx +11 -0
  94. package/docs/zh/components/ua-polyfill.mdx +1 -1
  95. package/docs/zh/configure/app/source/design-system.mdx +3 -4
  96. package/docs/zh/configure/app/source/enable-async-entry.mdx +2 -5
  97. package/docs/zh/configure/app/source/entries.mdx +2 -2
  98. package/docs/zh/configure/app/tools/swc.mdx +2 -2
  99. package/docs/zh/guides/advanced-features/rspack-start.mdx +6 -6
  100. package/docs/zh/guides/advanced-features/ssg.mdx +1 -1
  101. package/docs/zh/guides/advanced-features/testing.mdx +2 -2
  102. package/docs/zh/guides/advanced-features/web-server.mdx +1 -1
  103. package/docs/zh/guides/basic-features/css.mdx +1 -1
  104. package/docs/zh/guides/basic-features/mock.mdx +1 -1
  105. package/docs/zh/guides/basic-features/routes.mdx +7 -4
  106. package/docs/zh/guides/concept/entries.mdx +3 -3
  107. package/docs/zh/guides/topic-detail/generator/create/_category_.json +4 -0
  108. package/docs/zh/guides/topic-detail/generator/create/config.mdx +76 -0
  109. package/docs/zh/guides/topic-detail/generator/create/option.md +151 -0
  110. package/docs/zh/guides/topic-detail/generator/create/use.mdx +66 -0
  111. package/docs/zh/guides/topic-detail/generator/new/_category_.json +4 -0
  112. package/docs/zh/guides/topic-detail/generator/new/config.md +153 -0
  113. package/docs/zh/guides/topic-detail/generator/new/option.md +67 -0
  114. package/docs/zh/guides/topic-detail/generator/new/use.md +94 -0
  115. package/docs/zh/guides/topic-detail/generator/plugin/_category_.json +2 -2
  116. package/docs/zh/guides/topic-detail/generator/plugin/api/_category_.json +1 -1
  117. package/docs/zh/guides/topic-detail/generator/plugin/api/afterForged.md +50 -0
  118. package/docs/zh/guides/topic-detail/generator/plugin/api/context.md +184 -0
  119. package/docs/zh/guides/topic-detail/generator/plugin/api/input.md +124 -0
  120. package/docs/zh/guides/topic-detail/generator/plugin/api/onForged.md +310 -0
  121. package/docs/zh/guides/topic-detail/generator/plugin/category.md +93 -0
  122. package/docs/zh/guides/topic-detail/generator/plugin/context.md +105 -0
  123. package/docs/zh/guides/topic-detail/generator/plugin/structure.md +106 -0
  124. package/docs/zh/guides/topic-detail/generator/plugin/use.md +33 -0
  125. package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +4 -4
  126. package/docs/zh/guides/topic-detail/model/test-model.mdx +1 -1
  127. package/docs/zh/tutorials/first-app/c03-css.mdx +1 -1
  128. package/docs/zh/tutorials/first-app/c08-entries.mdx +1 -1
  129. package/modern.config.ts +2 -1
  130. package/package.json +5 -5
  131. package/docs/en/apis/app/hooks/api/framework/_category_.json +0 -4
  132. package/docs/en/apis/app/hooks/api/framework/lambda.mdx +0 -57
  133. package/docs/en/apis/app/hooks/api/functions/_category_.json +0 -4
  134. package/docs/en/apis/app/hooks/api/functions/api.mdx +0 -81
  135. package/docs/en/apis/app/hooks/api/functions/app.mdx +0 -12
  136. package/docs/en/apis/app/hooks/api/functions/common.mdx +0 -9
  137. package/docs/en/guides/topic-detail/generator/codesmith/_category_.json +0 -4
  138. package/docs/en/guides/topic-detail/generator/codesmith/api/_category_.json +0 -4
  139. package/docs/en/guides/topic-detail/generator/codesmith/api/app.mdx +0 -152
  140. package/docs/en/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -56
  141. package/docs/en/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -54
  142. package/docs/en/guides/topic-detail/generator/codesmith/api/git.mdx +0 -50
  143. package/docs/en/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -57
  144. package/docs/en/guides/topic-detail/generator/codesmith/api/json.mdx +0 -56
  145. package/docs/en/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -48
  146. package/docs/en/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
  147. package/docs/en/guides/topic-detail/generator/codesmith/introduce.mdx +0 -47
  148. package/docs/en/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -47
  149. package/docs/en/guides/topic-detail/generator/codesmith/structure.mdx +0 -89
  150. package/docs/en/guides/topic-detail/generator/config/_category_.json +0 -4
  151. package/docs/en/guides/topic-detail/generator/config/app.mdx +0 -82
  152. package/docs/en/guides/topic-detail/generator/config/common.mdx +0 -100
  153. package/docs/en/guides/topic-detail/generator/config/module.mdx +0 -42
  154. package/docs/en/guides/topic-detail/generator/config/monorepo.mdx +0 -28
  155. package/docs/en/guides/topic-detail/generator/plugin/abstract.mdx +0 -23
  156. package/docs/en/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -4
  157. package/docs/en/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -52
  158. package/docs/en/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -26
  159. package/docs/en/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -58
  160. package/docs/en/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -26
  161. package/docs/en/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -39
  162. package/docs/en/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -24
  163. package/docs/en/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -24
  164. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -54
  165. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -27
  166. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -33
  167. package/docs/en/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -4
  168. package/docs/en/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -20
  169. package/docs/en/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -16
  170. package/docs/en/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -16
  171. package/docs/en/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -4
  172. package/docs/en/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -35
  173. package/docs/en/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -35
  174. package/docs/en/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -4
  175. package/docs/en/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -22
  176. package/docs/en/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -17
  177. package/docs/en/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -22
  178. package/docs/en/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -4
  179. package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -55
  180. package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -55
  181. package/docs/en/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -43
  182. package/docs/en/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -31
  183. package/docs/en/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -65
  184. package/docs/en/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -90
  185. package/docs/en/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -4
  186. package/docs/en/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -33
  187. package/docs/en/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -35
  188. package/docs/en/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -44
  189. package/docs/en/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -15
  190. package/docs/en/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -4
  191. package/docs/en/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -18
  192. package/docs/en/guides/topic-detail/generator/plugin/develop.mdx +0 -125
  193. package/docs/en/guides/topic-detail/generator/plugin/use.mdx +0 -61
  194. package/docs/en/guides/topic-detail/generator/project.mdx +0 -118
  195. package/docs/zh/apis/app/hooks/api/framework/_category_.json +0 -4
  196. package/docs/zh/apis/app/hooks/api/functions/_category_.json +0 -4
  197. package/docs/zh/apis/app/hooks/api/functions/app.mdx +0 -12
  198. package/docs/zh/apis/app/hooks/api/functions/common.mdx +0 -9
  199. package/docs/zh/guides/topic-detail/generator/codesmith/_category_.json +0 -4
  200. package/docs/zh/guides/topic-detail/generator/codesmith/api/_category_.json +0 -4
  201. package/docs/zh/guides/topic-detail/generator/codesmith/api/app.mdx +0 -152
  202. package/docs/zh/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -56
  203. package/docs/zh/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -54
  204. package/docs/zh/guides/topic-detail/generator/codesmith/api/git.mdx +0 -49
  205. package/docs/zh/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -56
  206. package/docs/zh/guides/topic-detail/generator/codesmith/api/json.mdx +0 -56
  207. package/docs/zh/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -47
  208. package/docs/zh/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
  209. package/docs/zh/guides/topic-detail/generator/codesmith/introduce.mdx +0 -59
  210. package/docs/zh/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -47
  211. package/docs/zh/guides/topic-detail/generator/codesmith/structure.mdx +0 -89
  212. package/docs/zh/guides/topic-detail/generator/config/_category_.json +0 -4
  213. package/docs/zh/guides/topic-detail/generator/config/app.mdx +0 -82
  214. package/docs/zh/guides/topic-detail/generator/config/common.mdx +0 -100
  215. package/docs/zh/guides/topic-detail/generator/config/module.mdx +0 -42
  216. package/docs/zh/guides/topic-detail/generator/config/monorepo.mdx +0 -28
  217. package/docs/zh/guides/topic-detail/generator/plugin/abstract.mdx +0 -23
  218. package/docs/zh/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -4
  219. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -52
  220. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -26
  221. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -55
  222. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -26
  223. package/docs/zh/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -39
  224. package/docs/zh/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -24
  225. package/docs/zh/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -24
  226. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -54
  227. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -27
  228. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -33
  229. package/docs/zh/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -4
  230. package/docs/zh/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -20
  231. package/docs/zh/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -16
  232. package/docs/zh/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -16
  233. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -4
  234. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -35
  235. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -35
  236. package/docs/zh/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -4
  237. package/docs/zh/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -22
  238. package/docs/zh/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -17
  239. package/docs/zh/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -22
  240. package/docs/zh/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -4
  241. package/docs/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -57
  242. package/docs/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -56
  243. package/docs/zh/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -43
  244. package/docs/zh/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -29
  245. package/docs/zh/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -65
  246. package/docs/zh/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -92
  247. package/docs/zh/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -4
  248. package/docs/zh/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -33
  249. package/docs/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -35
  250. package/docs/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -44
  251. package/docs/zh/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -15
  252. package/docs/zh/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -4
  253. package/docs/zh/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -16
  254. package/docs/zh/guides/topic-detail/generator/plugin/develop.mdx +0 -125
  255. package/docs/zh/guides/topic-detail/generator/plugin/use.mdx +0 -61
  256. 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/`