@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
@@ -0,0 +1,93 @@
1
+ ---
2
+ sidebar_position: 2
3
+ ---
4
+
5
+ # 类型
6
+
7
+ ## 介绍
8
+
9
+ 生成器插件分为两类:
10
+
11
+ - 扩展:Web 应用( Npm 模块) = Web 应用( Npm 模块) + 生成器插件
12
+
13
+ - 自定义:新应用(模块) = Web 应用(模块) + 生成器插件
14
+
15
+
16
+ 简单理解就是扩展还是使用 Modern.js 原本的工程方案名称,自定义会创建一个新的名称。
17
+
18
+ ## 标识
19
+
20
+ 生成器插件的类型通过 `package.json` 中的 meta 字段来提供:
21
+
22
+ ### 扩展
23
+
24
+ ```json title="package.json"
25
+ {
26
+ "meta": {
27
+ "extend": "mwa" // module
28
+ }
29
+ }
30
+ ```
31
+
32
+ ### 自定义
33
+
34
+ ```json title="package.json"
35
+ {
36
+ "meta": {
37
+ "key": "new_app",
38
+ "name": "新应用",
39
+ "type": "mwa" // module 和 custom
40
+ }
41
+ }
42
+ ```
43
+
44
+ :::info
45
+ 自定义类型的 type 支持 custom 类型,custom 为使用 Modern.js 提供的一些项目开发的最佳实践模板,比如 `.gitignore`、`.editorConfig` 等文件,其他业务相关代码模板需要手动通过生成器插件提供。
46
+ :::
47
+
48
+ ## 创建初始项目
49
+
50
+ ### 扩展
51
+
52
+ ```bash
53
+ npx @modern-js/create@latest plugin --plugin @modern-js/generator-plugin-plugin
54
+ ? 请选择你想创建的工程类型 Npm 模块
55
+ ? 请选择项目场景 生成器插件
56
+ ? 请输入生成器插件插件包名 plugin
57
+ ? 请选择开发语言 TS
58
+ ? 请选择包管理工具 pnpm
59
+ ? 请选择插件类型 extend
60
+ ? 请选择插件基础类型 Web 应用
61
+ ```
62
+
63
+ ### 自定义
64
+
65
+ ```bash
66
+ npx @modern-js/create@latest plugin --plugin @modern-js/generator-plugin-plugin
67
+ ? 请选择项目类型 生成器插件
68
+ ? 请选择项目组织方式 独立项目
69
+ ? 请选择开发语言 TS
70
+ ? 请选择包管理工具 pnpm
71
+ ? 请输入生成器插件插件包名 plugin
72
+ ? 请选择开发语言 TS
73
+ ? 请选择包管理工具 pnpm
74
+ ? 请选择插件类型 custom
75
+ ? 请输入插件关键字 new_app
76
+ ? 请输入插件展示名称 新应用
77
+ ? 请选择插件基础类型 Web 应用
78
+ ```
79
+
80
+ ## 执行顺序
81
+
82
+ 生成器插件支持同时使用多个,也就是执行 `@modern-js/create` 时支持多个 `--plugin` 参数。
83
+
84
+ ### 扩展
85
+
86
+ 扩展生成器插件支持在执行时会按照声明的生成器插件参数的顺序,依次执行对应 extend 的工程方案的生命周期函数。
87
+
88
+ 例如存在 A 和 B 两个生成器插件,A 和 B 都是 extend 的 Web 应用工程方案,A 插件声明添加 `a.ts` 文件,B 插件声明添加 `b.ts` 文件,
89
+ 执行 `npx @modern-js/create@latest --plugin A --plugin B` 时,选择 Web 应用工程时,会先生成 Web 应用默认的项目文件,然后执行 A 插件创建 `a.ts` 文件,再执行 B 插件,生成 `b.ts` 文件。
90
+
91
+ ### 自定义
92
+
93
+ 自定义生成器插件只支持同一时间运行一个生成器插件,当 `@modern-js/create` 声明 `--plugin` 参数时,会在选择工程方案之后增加选择工程方案场景选项,即为上述 `package.json` 中定义的新 name,选择对应 name 的生成器插件,即会在默认工程方案执行完成后,执行对应的生成器插件逻辑。声明 `--plugin` 参数时,工程方案场景下将会逐一列举出对应的生成器插件名称供选择。
@@ -0,0 +1,105 @@
1
+ ---
2
+ sidebar_position: 4
3
+ ---
4
+
5
+ # Context
6
+
7
+ 生成器插件默认会导出一个函数,函数参数为 `context`,在执行过程中 `context` 会自动注入到生成器插件中。
8
+
9
+ ```ts title="src/index.ts"
10
+ import { IPluginContext, ForgedAPI } from '@modern-js/generator-plugin';
11
+
12
+ export default function (context: IPluginContext) {
13
+ context.onForged(async (_api: ForgedAPI, _input: Record<string, unknown>) => {
14
+ /**
15
+ * Todo
16
+ */
17
+ });
18
+ }
19
+ ```
20
+
21
+ `context` 提供了两类 API,分别用于自定义 Input 和定义生成器插件声明周期逻辑。
22
+
23
+ :::info
24
+ 下面只对部分 API 做简单示例讲解,完整的 API 请移步 [生成器插件 API](/guides/topic-detail/generator/plugin/api/context.html) 查看。
25
+ :::
26
+
27
+ ## 自定义 Input
28
+
29
+ Modern.js Web 应用和 Npm 模块工程方案都存在一些默认的 Input 交互,使用这里的 API 可以对这些 Input 进行添加、修改、隐藏、提供默认值等操作。
30
+
31
+ 例如:
32
+
33
+ - 添加问题
34
+
35
+ ```ts
36
+ context.addInputBefore('packageManager', {
37
+ type: 'object',
38
+ properties: {
39
+ 'username': {
40
+ type: 'string',
41
+ title: '用户名',
42
+ },
43
+ },
44
+ });
45
+ ```
46
+
47
+ - 通过设置 config 隐藏问题
48
+
49
+ ```ts
50
+ context.setDefaultConfig({ langauge: 'ts' });
51
+ ```
52
+
53
+ ## 生命周期
54
+
55
+ 生成器插件提供了两个生命周期钩子函数用于定义生成器插件行为:
56
+
57
+ - onForged:完成文件操作后的生命周期。
58
+
59
+ - afterForged:onForged 钩子函数执行完成后的生命周期。
60
+
61
+ ## onForged
62
+
63
+ 在 Modern.js 工程方案生成器完成文件操作之后的钩子函数,用于完成生成器插件中的文件操作,比如添加模板文件,覆盖现有文件,删除现有文件等。
64
+
65
+ 对于扩展类型同时执行多个生成器插件时,将会按照声明顺序依次执行对应生成器插件的 `onForged` 操作。
66
+
67
+ `onForged` 函数参数为一个回调函数,参数为 `api` 和 `input`。
68
+
69
+ ```ts
70
+ context.onForged(async (api: ForgedAPI, input: Record<string, unknown>) => {
71
+ const { language } = input;
72
+ api.addFile({
73
+ type: FileType.Text,
74
+ file: `src/index.${language as string}`,
75
+ templateFile: `index.${language as string}.handlebars`,
76
+ force: true,
77
+ });
78
+ })
79
+ ```
80
+
81
+ `api` 上会提供生成器插件支持的文件操作相关方法。
82
+
83
+ `input` 为当前用户输入内容,包含 `--config` 参数定义的,默认工程方案交互的及生成器插件定义的用户输入。
84
+
85
+ 当需要添加新的文件模板时,将模板文件定义到 `templates` 目录,然后通过上述 `api` 上方法进行操作即可,生成器插件默认对 `templates` 目录文件进行操作,无需再声明 `templates` 路径。
86
+
87
+ ## afterForged
88
+
89
+ `onForged` 钩子函数执行完成后执行,这里主要用于进行安装依赖,Git 操作等。
90
+
91
+ 默认 Modern.js 工程方案在完成文件操作后会默认执行安装依赖及 Git 初始化,Git 初次提交等,该钩子函数可以不使用。
92
+
93
+ 对于自定义的生成器插件还支持 custom 类型,该类型只提供了少量最佳实践的项目配置,则需要在该钩子函数中完成安装依赖和 Git 初始化等操作。
94
+
95
+ `afterForged` 函数参数也为一个回调函数,参数为 `api` 和 `input`。
96
+
97
+ ```ts
98
+ context.afterForged(
99
+ async (api: AfterForgedAPI, input: Record<string, unknown>) => {
100
+ const { packageManager } = input;
101
+ console.info('packageManager:', packageManager);
102
+ await api.install();
103
+ },
104
+ );
105
+ ```
@@ -0,0 +1,106 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
5
+ # 介绍及创建项目
6
+
7
+ ## 介绍
8
+
9
+ Modern.js 提供了 Web 应用、Npm 模块等工程方案,并通过使用 `@modern-js/create` 工具可以创建工程方案的初始项目模板,初始项目模板会提供基本的代码开发环境、简单的示例代码及配置等。
10
+
11
+ Modern.js 提供的初始化模板具有通用性,能满足一些通用的项目开发需求。
12
+
13
+ 当你深度使用 Modern.js 时,必然会发现每次创建的项目都会进行一些针对自身项目的特定的相似改动,比如修改示例代码、增加一些配置、开启某些功能等。
14
+
15
+ 生成器插件可以帮你将这些针对个人或团队特定的改动沉淀下来,在执行 `npx @modern-js/create@latest` 只需简单的带上 `--plugin` 参数即可避免每次创建完项目都需重复性修改项目的工作。
16
+
17
+ 生成器插件是在 Modern.js 提供的初始化模板项目的基础上,提供对模板进行增加、删除、修改的方法,并通过快捷的方式修改 `package.json`、`modernConfig` 配置和开启功能等操作。
18
+
19
+ ## 创建项目
20
+
21
+ 使用 `@modern-js/create` 可直接创建生成器插件项目:
22
+
23
+ ```bash
24
+ npx @modern-js/create@latest plugin --plugin @modern-js/generator-plugin-plugin
25
+ ? 请选择你想创建的工程类型 Npm 模块
26
+ ? 请选择项目场景 生成器插件
27
+ ? 请输入生成器插件插件包名 plugin
28
+ ? 请选择开发语言 TS
29
+ ? 请选择包管理工具 pnpm
30
+ ? 请选择插件类型 extend
31
+ ? 请选择插件基础类型 Web 应用
32
+ ```
33
+
34
+ 创建完成后,我们可以看一下这个项目的目录结构:
35
+
36
+ ```bash
37
+ .
38
+ ├── .changeset
39
+ │ └── config.json
40
+ ├── .eslintrc.js
41
+ ├── .gitignore
42
+ ├── .npmrc
43
+ ├── .nvmrc
44
+ ├── .prettierrc
45
+ ├── README.md
46
+ ├── modern.config.ts
47
+ ├── package.json
48
+ ├── src
49
+ │ ├── modern-app-env.d.ts
50
+ │ └── index.ts
51
+ ├── templates
52
+ │ └── .gitkeep
53
+ └── tsconfig.json
54
+ ```
55
+
56
+ 项目是基于 Npm 模块项目创建的,核心是下面几个文件:
57
+
58
+ ```bash
59
+ *
60
+ ├── package.json
61
+ ├── src
62
+ │ └── index.ts
63
+ ├── templates
64
+ │ └── .gitkeep
65
+ ```
66
+
67
+ ## package.json
68
+
69
+ `package.json` 中除了正常的模块项目的字段外,提供了 meta 字段,用于描述生成器插件的信息。
70
+
71
+ 生成器插件分为两类:扩展和自定义,具体分类定义可查看[类型](/guides/topic-detail/generator/plugin/category)。
72
+
73
+ ```json title="package.json"
74
+ {
75
+ ...,
76
+ "meta": {
77
+ "extend": "mwa"
78
+ }
79
+ }
80
+ ```
81
+
82
+ ## src/index.ts
83
+
84
+ 该文件用于完成生成器插件的内容开发。
85
+
86
+ ```js
87
+ import { IPluginContext, ForgedAPI } from '@modern-js/generator-plugin';
88
+
89
+ export default function (context: IPluginContext) {
90
+ context.onForged(async (_api: ForgedAPI, _input: Record<string, unknown>) => {
91
+ /**
92
+ * todo
93
+ */
94
+ });
95
+ }
96
+ ```
97
+
98
+ 该文件默认导出一个函数,函数参数为 `context`,`context` 上提供了生成器插件支持的 API 方法,可用于实现生成器插件的逻辑。`context` 提供的能力可以参考 [context](/guides/topic-detail/generator/plugin/context)。
99
+
100
+ ## templates
101
+
102
+ `templates` 目录存在当前定制化方式的模板文件,支持 [Handlebars](https://handlebarsjs.com/) 和 [EJS](https://ejs.co/) 格式,将根据模板文件后缀使用不同的渲染引擎就行渲染,如果无后缀,将会直接复制模板文件到目标目录。
103
+
104
+ 如果模板文件为 `js`、`ts` 或者 `json` 文件,推荐直接使用 `.handlebars` 或者 `.ejs` 后缀,可避免项目 eslint 报错和在 Monorepo 中项目识别问题。
105
+
106
+ 模板中 `.gitignore` 文件和 `.npmrc` 文件在发布 npm 包时会自动删除,需要使用 `.handlebars` 或者 `.ejs` 后缀将其保留。
@@ -0,0 +1,33 @@
1
+ ---
2
+ sidebar_position: 3
3
+ ---
4
+
5
+ # 使用
6
+
7
+ `@modern-js/create` 提供了 `--plugin` 参数用于运行生成器插件项目。
8
+
9
+ `--plugin` 支持三种格式:
10
+
11
+ ## 绝对路径
12
+
13
+ 适用于本地开发调试,开发完成后,在生成器插件执行 `npm run build` 构建项目,然后使用下面命令即可进行测试。
14
+
15
+ ```bash
16
+ npx @modern-js/create@latest --plugin <pluginPath>
17
+ ```
18
+
19
+ ## 相对路径
20
+
21
+ 适用于本地开发调试或者生成器插件项目和目标创建项目在同一个 Monorepo,无需发布 NPM 包,构建项目后,执行下面命令即可。
22
+
23
+ ```bash
24
+ npx @modern-js/create@latest --plugin file:../<pluginPath>
25
+ ```
26
+
27
+ ## npm 包
28
+
29
+ 适用于生成器插件发布于 npm 上,共享生成器插件场景。
30
+
31
+ ```bash
32
+ npx @modern-js/create@latest --plugin <pluginPackage>
33
+ ```
@@ -35,7 +35,7 @@ import DefaultMWAGenerate from "@site-docs/components/default-mwa-generate";
35
35
 
36
36
  ```bash
37
37
  ? 请选择你想要的操作 启用可选功能
38
- ? 启用可选功能 启用「微前端」模式
38
+ ? 请选择功能名称 启用「微前端」模式
39
39
  ```
40
40
 
41
41
  接下来,让我们注册微前端插件并添加开启微前端主应用,并增加子应用列表:
@@ -115,7 +115,7 @@ npx @modern-js/create@latest
115
115
 
116
116
  ```bash
117
117
  ? 请选择你想要的操作 启用可选功能
118
- ? 启用可选功能 启用「微前端」模式
118
+ ? 请选择功能名称 启用「微前端」模式
119
119
  ```
120
120
 
121
121
  接下来,让我们注册微前端插件并添加开启微前端主应用,并增加子应用列表:
@@ -145,7 +145,7 @@ npx @modern-js/create@latest
145
145
 
146
146
  ```bash
147
147
  ? 请选择你想要的操作 启用可选功能
148
- ? 启用可选功能 启用「微前端」模式
148
+ ? 请选择功能名称 启用「微前端」模式
149
149
  ```
150
150
 
151
151
  接下来,让我们注册微前端插件并修改 `modern.config.ts`,添加微前端子应用的配置 `deploy.microFrontend`:
@@ -197,7 +197,7 @@ npx @modern-js/create@latest
197
197
 
198
198
  ```bash
199
199
  ? 请选择你想要的操作 启用可选功能
200
- ? 启用可选功能 启用「微前端」模式
200
+ ? 请选择功能名称 启用「微前端」模式
201
201
  ```
202
202
 
203
203
  接下来,让我们注册微前端插件并修改 `modern.config.ts`,添加微前端子应用的配置 `deploy.microFrontend`:
@@ -10,7 +10,7 @@ title: 测试 Model
10
10
 
11
11
  ```bash
12
12
  ? 请选择你想要的操作 启用可选功能
13
- ? 启用可选功能 启用「单元测试 / 集成测试」功能
13
+ ? 请选择功能名称 启用「单元测试 / 集成测试」功能
14
14
  ```
15
15
 
16
16
  即可开启测试功能支持。
@@ -115,7 +115,7 @@ Modern.js 集成了主流、轻量、通用的 Utility Class 工具库 [Tailwind
115
115
 
116
116
  ```bash
117
117
  ? 请选择你想要的操作 启用可选功能
118
- ? 启用可选功能 启用 Tailwind CSS 支持
118
+ ? 请选择功能名称 启用 Tailwind CSS 支持
119
119
  ```
120
120
 
121
121
  在 `modern.config.ts` 中注册 Tailwind 插件:
@@ -15,7 +15,7 @@ title: 添加应用入口
15
15
 
16
16
  ```bash
17
17
  ? 请选择你想要的操作 创建工程元素
18
- ? 创建工程元素 新建「应用入口」
18
+ ? 请选择创建元素类型 新建「应用入口」
19
19
  ? 请填写入口名称 (entry) landing-page
20
20
  ```
21
21
 
package/modern.config.ts CHANGED
@@ -130,7 +130,8 @@ export default defineConfig({
130
130
  ],
131
131
  },
132
132
  route: {
133
- exclude: ['scripts/**', '**/components/**'],
133
+ // exclude document fragments from routes
134
+ exclude: ['scripts/**', '**/zh/components/**', '**/en/components/**'],
134
135
  },
135
136
  builderConfig: {
136
137
  output: {
package/package.json CHANGED
@@ -15,13 +15,13 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.21.0",
18
+ "version": "2.22.0",
19
19
  "publishConfig": {
20
20
  "registry": "https://registry.npmjs.org/",
21
21
  "access": "public"
22
22
  },
23
23
  "peerDependencies": {
24
- "@modern-js/builder-doc": "^2.21.0"
24
+ "@modern-js/builder-doc": "^2.22.0"
25
25
  },
26
26
  "devDependencies": {
27
27
  "classnames": "^2",
@@ -33,9 +33,9 @@
33
33
  "fs-extra": "^10",
34
34
  "@types/node": "^16",
35
35
  "@types/fs-extra": "^9",
36
- "@modern-js/builder-doc": "2.21.0",
37
- "@modern-js/doc-tools": "2.21.0",
38
- "@modern-js/doc-plugin-auto-sidebar": "2.21.0"
36
+ "@modern-js/builder-doc": "2.22.0",
37
+ "@modern-js/doc-tools": "2.22.0",
38
+ "@modern-js/doc-plugin-auto-sidebar": "2.22.0"
39
39
  },
40
40
  "scripts": {
41
41
  "dev": "modern dev",
@@ -1,4 +0,0 @@
1
- {
2
- "label": "框架写法",
3
- "position": 2
4
- }
@@ -1,57 +0,0 @@
1
- ---
2
- title: lambda/*.[tj]s
3
- sidebar_position: 1
4
- ---
5
- # lambda/*.[tj]s
6
-
7
- Declaring API routing in BFF framework mode. Except [some files](/apis/app/hooks/api/framework/lambda#allow-list), files in `api/` are registered as routes.
8
-
9
- :::info
10
- use `api/` need execute new command to enable the 「BFF」 feature.
11
-
12
- :::
13
-
14
- :::tip
15
- this file supports the use `js` or `ts`, but the functions must be exported using the ESM syntax.
16
-
17
- :::
18
-
19
- ## Routing Rule
20
-
21
- ### Default Route
22
-
23
- The files named `index` will be upper level routing:
24
-
25
- - `api/lambda/index.ts` -> `$BASENAME/`
26
- - `api/lambda/user/index.ts` -> `$BASENAME/user`
27
-
28
- ### Multi Level Route
29
-
30
- The routing system also supports parsing multiple levels of files. and if you create a folder, the files will still be automatically parsed in the same way.
31
-
32
- - `api/lambda/hello.ts` -> `$BASENAME/hello`
33
- - `api/lambda/user/list.ts` -> `$BASENAME/user/list`
34
-
35
- ### Dynamic Route
36
-
37
- Dynamic named routing parameters can be supported by creating folders or files with `[xxx]`.
38
-
39
- - `api/lambda/user/[username]/info.ts` -> `$BASENAME/user/:username/info`
40
- - `api/lambda/user/[username]/delete.ts` -> `$BASENAME/user/:username/delete`
41
- - `api/lambda/article/[id]/info.ts` -> `$BASENAME/article/:id/info`
42
-
43
- the `$BASENAME` can be configured in `modern.config.js`, the default value is `/api`.
44
-
45
- ### Allow List
46
-
47
- By default, all files in the `api/` will be parsed as BFF function. but we also set a allow list, and these files will not be parsed:
48
-
49
- - file name start with `_`, for example: `_utils.ts`.
50
- - files in directory that name start with `_`, for example: `_utils/index.ts`、`_utils/cp.ts`.
51
- - test files, for example: `foo.test.ts`.
52
- - TypeScript define files, for example: `hello.d.ts`.
53
- - files in `node_module`.
54
-
55
- ## Define Function
56
-
57
- the same as [Define Function](/apis/app/hooks/api/functions/api#define-function).
@@ -1,4 +0,0 @@
1
- {
2
- "label": "函数写法",
3
- "position": 1
4
- }
@@ -1,81 +0,0 @@
1
- ---
2
- title: '**/*.[tj]s'
3
- sidebar_position: 1
4
- ---
5
- # **/*.[tj]s
6
-
7
- Declaring API routing in BFF function mode. Except [some files](/apis/app/hooks/api/functions/api#allow-list), files in `api/` are registered as routes.
8
-
9
- :::info
10
- use `api/` need execute new command to enable the 「BFF」 feature.
11
-
12
- :::
13
-
14
- :::tip
15
- this file supports the use `js` or `ts`, but the functions must be exported using the ESM syntax.
16
-
17
- :::
18
-
19
- ## Routing Rule
20
-
21
- ### Default Route
22
-
23
- The files named `index` will be upper level routing:
24
-
25
- - `api/index.ts` -> `$BASENAME/`
26
- - `api/user/index.ts` -> `$BASENAME/user`
27
-
28
- ### Multi Level Route
29
-
30
- The routing system also supports parsing multiple levels of files. and if you create a folder, the files will still be automatically parsed in the same way.
31
-
32
- - `api/hello.ts` -> `$BASENAME/hello`
33
- - `api/user/list.ts` -> `$BASENAME/user/list`
34
-
35
- ### Dynamic Route
36
-
37
- Dynamic named routing parameters can be supported by creating folders or files with `[xxx]`.
38
-
39
- - `api/user/[username]/info.ts` -> `$BASENAME/user/:username/info`
40
- - `api/user/[username]/delete.ts` -> `$BASENAME/user/:username/delete`
41
- - `api/article/[id]/info.ts` -> `$BASENAME/article/:id/info`
42
-
43
- the `$BASENAME` can be configured in `modern.config.js`, the default value is `/api`.
44
-
45
- ### Allow List
46
-
47
- By default, all files in the `api/` will be parsed as BFF function. but we also set a allow list, and these files will not be parsed:
48
-
49
- - file name start with `_`, for example: `_utils.ts`.
50
- - files in directory that name start with `_`, for example: `_utils/index.ts`、`_utils/cp.ts`.
51
- - test files, for example: `foo.test.ts`.
52
- - TypeScript define files, for example: `hello.d.ts`.
53
- - files in `node_module`.
54
-
55
- ## Define Function
56
-
57
- In addition to the above routing rules, the function definition and export in the code also have conventions.
58
-
59
- function need named exports, and the name of the exported function is the HTTP Method:
60
-
61
- ```ts
62
- export const get = async () => {
63
- return {
64
- name: 'Modern.js',
65
- desc: 'Modern web Solutions',
66
- };
67
- };
68
- ```
69
-
70
- Export the function like above will generate a `POST` interface.
71
-
72
- App support 9 Method definitions: `GET`、`POST`、`PUT`、`DELETE`、`CONNECT`、`TRACE`、`PATCH`、`OPTION`、`HEAD`. so App can use these name as function export nane.
73
-
74
- The name is insensitive, whaterver `get`、`Get`、`GEt`、`GET`, can be accurately identified. And default export, `export default xxx` will be `Get` method.
75
-
76
- because `delete` is a keyword in JavaScript, use `del` or `DELETE` instead.
77
-
78
- Multiple functions of different Methods can be defined in one file, but if multiple functions of the same Method are defined, only the first can work.
79
-
80
- :::info
81
- It should be noted that the defined functions should be asynchronous, which is related to the type when the function is called.
@@ -1,12 +0,0 @@
1
- ---
2
- title: _app.[tj]s
3
- sidebar_position: 3
4
- ---
5
- # _app.[tj]s
6
-
7
- in BFF function mode, this file can add middleware before [BFF 函数](/apis/app/hooks/api/functions/api).
8
-
9
- :::note
10
- For detail, see [hook](/apis/app/runtime/bff/hook)
11
-
12
- :::
@@ -1,9 +0,0 @@
1
- ---
2
- title: '**/_*.[tj]s, _*/**'
3
- sidebar_position: 2
4
- ---
5
- # **/_*.[tj]s, _*/**
6
-
7
- under BFF function mode, these files are not registered as routes.
8
-
9
- Any files that not routes, but required in the project can be named in this way.
@@ -1,4 +0,0 @@
1
- {
2
- "label": "Develop microgenerator",
3
- "position": 5
4
- }
@@ -1,4 +0,0 @@
1
- {
2
- "label": "API",
3
- "position": 5
4
- }