@modern-js/main-doc 2.21.1 → 2.22.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. package/CHANGELOG.md +42 -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/debug-app.mdx +1 -1
  28. package/docs/en/components/deploy.mdx +1 -0
  29. package/docs/en/components/entry-mode.mdx +0 -0
  30. package/docs/en/components/init-app.mdx +6 -10
  31. package/docs/en/components/init-rspack-app.mdx +4 -4
  32. package/docs/en/components/language-config.mdx +9 -0
  33. package/docs/en/components/package-manager.mdx +11 -0
  34. package/docs/en/components/release-note.mdx +1 -0
  35. package/docs/en/components/ua-polyfill.mdx +2 -2
  36. package/docs/en/configure/app/output/css-modules.mdx +13 -0
  37. package/docs/en/configure/app/source/config-dir.mdx +1 -1
  38. package/docs/en/configure/app/source/design-system.mdx +67 -67
  39. package/docs/en/configure/app/source/disable-default-entries.mdx +6 -5
  40. package/docs/en/configure/app/source/disable-entry-dirs.mdx +5 -5
  41. package/docs/en/configure/app/source/enable-async-entry.mdx +9 -9
  42. package/docs/en/configure/app/source/entries-dir.mdx +3 -3
  43. package/docs/en/configure/app/source/entries.mdx +21 -19
  44. package/docs/en/configure/app/tools/swc.mdx +2 -16
  45. package/docs/en/guides/advanced-features/bff/frameworks.mdx +2 -2
  46. package/docs/en/guides/advanced-features/bff/function.mdx +4 -4
  47. package/docs/en/guides/advanced-features/bff/type.mdx +5 -5
  48. package/docs/en/guides/advanced-features/rspack-start.mdx +7 -8
  49. package/docs/en/guides/advanced-features/ssg.mdx +2 -2
  50. package/docs/en/guides/advanced-features/testing.mdx +2 -2
  51. package/docs/en/guides/advanced-features/web-server.mdx +2 -2
  52. package/docs/en/guides/basic-features/css.mdx +2 -2
  53. package/docs/en/guides/basic-features/mock.mdx +1 -1
  54. package/docs/en/guides/basic-features/routes.mdx +11 -7
  55. package/docs/en/guides/concept/builder.mdx +15 -15
  56. package/docs/en/guides/concept/entries.mdx +50 -49
  57. package/docs/en/guides/get-started/glossary.mdx +12 -12
  58. package/docs/en/guides/get-started/introduction.mdx +17 -20
  59. package/docs/en/guides/get-started/quick-start.mdx +21 -37
  60. package/docs/en/guides/get-started/upgrade.mdx +15 -13
  61. package/docs/en/guides/topic-detail/changesets/_category_.json +4 -0
  62. package/docs/en/guides/topic-detail/changesets/add.mdx +125 -0
  63. package/docs/en/guides/topic-detail/changesets/changelog.mdx +238 -0
  64. package/docs/en/guides/topic-detail/changesets/commit.mdx +269 -0
  65. package/docs/en/guides/topic-detail/changesets/config.mdx +147 -0
  66. package/docs/en/guides/topic-detail/changesets/github.mdx +175 -0
  67. package/docs/en/guides/topic-detail/changesets/introduce.mdx +56 -0
  68. package/docs/en/guides/topic-detail/changesets/release-note.mdx +273 -0
  69. package/docs/en/guides/topic-detail/changesets/release-pre.mdx +49 -0
  70. package/docs/en/guides/topic-detail/changesets/release.mdx +229 -0
  71. package/docs/en/guides/topic-detail/generator/create/_category_.json +4 -0
  72. package/docs/en/guides/topic-detail/generator/create/config.mdx +75 -0
  73. package/docs/en/guides/topic-detail/generator/create/option.md +151 -0
  74. package/docs/en/guides/topic-detail/generator/create/use.mdx +66 -0
  75. package/docs/en/guides/topic-detail/generator/new/_category_.json +4 -0
  76. package/docs/en/guides/topic-detail/generator/new/config.md +155 -0
  77. package/docs/en/guides/topic-detail/generator/new/option.md +67 -0
  78. package/docs/en/guides/topic-detail/generator/new/use.md +95 -0
  79. package/docs/en/guides/topic-detail/generator/plugin/_category_.json +2 -2
  80. package/docs/en/guides/topic-detail/generator/plugin/api/_category_.json +1 -1
  81. package/docs/en/guides/topic-detail/generator/plugin/api/afterForged.md +49 -0
  82. package/docs/en/guides/topic-detail/generator/plugin/api/context.md +184 -0
  83. package/docs/en/guides/topic-detail/generator/plugin/api/input.md +124 -0
  84. package/docs/en/guides/topic-detail/generator/plugin/api/onForged.md +310 -0
  85. package/docs/en/guides/topic-detail/generator/plugin/category.md +88 -0
  86. package/docs/en/guides/topic-detail/generator/plugin/context.md +104 -0
  87. package/docs/en/guides/topic-detail/generator/plugin/structure.md +106 -0
  88. package/docs/en/guides/topic-detail/generator/plugin/use.md +33 -0
  89. package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +8 -8
  90. package/docs/en/guides/troubleshooting/builder.mdx +8 -0
  91. package/docs/en/tutorials/first-app/c03-css.mdx +2 -2
  92. package/docs/en/tutorials/first-app/c08-entries.mdx +3 -3
  93. package/docs/zh/apis/app/commands.mdx +3 -3
  94. package/docs/zh/apis/app/hooks/api/{functions/api.mdx → api.mdx} +4 -4
  95. package/docs/zh/apis/app/hooks/api/app.mdx +12 -0
  96. package/docs/zh/apis/app/hooks/api/{framework/lambda.mdx → lambda.mdx} +5 -5
  97. package/docs/zh/apis/app/hooks/api/test.mdx +3 -3
  98. package/docs/zh/apis/app/hooks/config/icon.mdx +15 -15
  99. package/docs/zh/apis/app/hooks/config/mock.mdx +1 -1
  100. package/docs/zh/apis/app/hooks/config/public.mdx +3 -3
  101. package/docs/zh/apis/app/hooks/config/upload.mdx +1 -1
  102. package/docs/zh/apis/app/hooks/modern-config.mdx +3 -3
  103. package/docs/zh/apis/app/hooks/server/index_.mdx +1 -6
  104. package/docs/zh/apis/app/hooks/shared.mdx +1 -1
  105. package/docs/zh/apis/app/hooks/src/app.mdx +15 -25
  106. package/docs/zh/apis/app/hooks/src/index_.mdx +6 -6
  107. package/docs/zh/apis/app/hooks/src/pages.mdx +7 -3
  108. package/docs/zh/apis/app/hooks/src/routes.mdx +4 -4
  109. package/docs/zh/apis/app/hooks/src/stories.mdx +1 -1
  110. package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +5 -1
  111. package/docs/zh/community/blog/v2-release-note.mdx +1 -1
  112. package/docs/zh/community/contributing-guide.mdx +1 -1
  113. package/docs/zh/components/entry-mode.mdx +0 -0
  114. package/docs/zh/components/init-app.mdx +5 -9
  115. package/docs/zh/components/language-config.mdx +9 -0
  116. package/docs/zh/components/package-manager.mdx +11 -0
  117. package/docs/zh/components/ua-polyfill.mdx +1 -1
  118. package/docs/zh/configure/app/output/css-modules.mdx +13 -0
  119. package/docs/zh/configure/app/source/design-system.mdx +3 -4
  120. package/docs/zh/configure/app/source/enable-async-entry.mdx +2 -5
  121. package/docs/zh/configure/app/source/entries.mdx +2 -2
  122. package/docs/zh/configure/app/tools/swc.mdx +2 -16
  123. package/docs/zh/guides/advanced-features/rspack-start.mdx +7 -8
  124. package/docs/zh/guides/advanced-features/ssg.mdx +1 -1
  125. package/docs/zh/guides/advanced-features/testing.mdx +2 -2
  126. package/docs/zh/guides/advanced-features/web-server.mdx +1 -1
  127. package/docs/zh/guides/basic-features/css.mdx +1 -1
  128. package/docs/zh/guides/basic-features/mock.mdx +1 -1
  129. package/docs/zh/guides/basic-features/routes.mdx +7 -4
  130. package/docs/zh/guides/concept/builder.mdx +1 -1
  131. package/docs/zh/guides/concept/entries.mdx +21 -17
  132. package/docs/zh/guides/get-started/quick-start.mdx +7 -10
  133. package/docs/zh/guides/get-started/upgrade.mdx +1 -1
  134. package/docs/zh/guides/topic-detail/changesets/add.mdx +15 -13
  135. package/docs/zh/guides/topic-detail/changesets/changelog.mdx +20 -20
  136. package/docs/zh/guides/topic-detail/changesets/commit.mdx +12 -14
  137. package/docs/zh/guides/topic-detail/changesets/config.mdx +5 -5
  138. package/docs/zh/guides/topic-detail/changesets/github.mdx +38 -27
  139. package/docs/zh/guides/topic-detail/changesets/introduce.mdx +12 -12
  140. package/docs/zh/guides/topic-detail/changesets/release-note.mdx +84 -70
  141. package/docs/zh/guides/topic-detail/changesets/release-pre.mdx +9 -9
  142. package/docs/zh/guides/topic-detail/changesets/release.mdx +29 -29
  143. package/docs/zh/guides/topic-detail/generator/create/_category_.json +4 -0
  144. package/docs/zh/guides/topic-detail/generator/create/config.mdx +76 -0
  145. package/docs/zh/guides/topic-detail/generator/create/option.md +151 -0
  146. package/docs/zh/guides/topic-detail/generator/create/use.mdx +66 -0
  147. package/docs/zh/guides/topic-detail/generator/new/_category_.json +4 -0
  148. package/docs/zh/guides/topic-detail/generator/new/config.md +153 -0
  149. package/docs/zh/guides/topic-detail/generator/new/option.md +67 -0
  150. package/docs/zh/guides/topic-detail/generator/new/use.md +94 -0
  151. package/docs/zh/guides/topic-detail/generator/plugin/_category_.json +2 -2
  152. package/docs/zh/guides/topic-detail/generator/plugin/api/_category_.json +1 -1
  153. package/docs/zh/guides/topic-detail/generator/plugin/api/afterForged.md +50 -0
  154. package/docs/zh/guides/topic-detail/generator/plugin/api/context.md +184 -0
  155. package/docs/zh/guides/topic-detail/generator/plugin/api/input.md +124 -0
  156. package/docs/zh/guides/topic-detail/generator/plugin/api/onForged.md +310 -0
  157. package/docs/zh/guides/topic-detail/generator/plugin/category.md +93 -0
  158. package/docs/zh/guides/topic-detail/generator/plugin/context.md +105 -0
  159. package/docs/zh/guides/topic-detail/generator/plugin/structure.md +106 -0
  160. package/docs/zh/guides/topic-detail/generator/plugin/use.md +33 -0
  161. package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +4 -4
  162. package/docs/zh/guides/topic-detail/model/test-model.mdx +1 -1
  163. package/docs/zh/guides/troubleshooting/builder.mdx +8 -0
  164. package/docs/zh/tutorials/first-app/c03-css.mdx +1 -1
  165. package/docs/zh/tutorials/first-app/c08-entries.mdx +1 -1
  166. package/package.json +5 -5
  167. package/docs/en/apis/app/hooks/api/framework/_category_.json +0 -4
  168. package/docs/en/apis/app/hooks/api/framework/lambda.mdx +0 -57
  169. package/docs/en/apis/app/hooks/api/functions/_category_.json +0 -4
  170. package/docs/en/apis/app/hooks/api/functions/api.mdx +0 -81
  171. package/docs/en/apis/app/hooks/api/functions/app.mdx +0 -12
  172. package/docs/en/apis/app/hooks/api/functions/common.mdx +0 -9
  173. package/docs/en/guides/topic-detail/generator/codesmith/_category_.json +0 -4
  174. package/docs/en/guides/topic-detail/generator/codesmith/api/_category_.json +0 -4
  175. package/docs/en/guides/topic-detail/generator/codesmith/api/app.mdx +0 -152
  176. package/docs/en/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -56
  177. package/docs/en/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -54
  178. package/docs/en/guides/topic-detail/generator/codesmith/api/git.mdx +0 -50
  179. package/docs/en/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -57
  180. package/docs/en/guides/topic-detail/generator/codesmith/api/json.mdx +0 -56
  181. package/docs/en/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -48
  182. package/docs/en/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
  183. package/docs/en/guides/topic-detail/generator/codesmith/introduce.mdx +0 -47
  184. package/docs/en/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -47
  185. package/docs/en/guides/topic-detail/generator/codesmith/structure.mdx +0 -89
  186. package/docs/en/guides/topic-detail/generator/config/_category_.json +0 -4
  187. package/docs/en/guides/topic-detail/generator/config/app.mdx +0 -82
  188. package/docs/en/guides/topic-detail/generator/config/common.mdx +0 -100
  189. package/docs/en/guides/topic-detail/generator/config/module.mdx +0 -42
  190. package/docs/en/guides/topic-detail/generator/config/monorepo.mdx +0 -28
  191. package/docs/en/guides/topic-detail/generator/plugin/abstract.mdx +0 -23
  192. package/docs/en/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -4
  193. package/docs/en/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -52
  194. package/docs/en/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -26
  195. package/docs/en/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -58
  196. package/docs/en/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -26
  197. package/docs/en/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -39
  198. package/docs/en/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -24
  199. package/docs/en/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -24
  200. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -54
  201. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -27
  202. package/docs/en/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -33
  203. package/docs/en/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -4
  204. package/docs/en/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -20
  205. package/docs/en/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -16
  206. package/docs/en/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -16
  207. package/docs/en/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -4
  208. package/docs/en/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -35
  209. package/docs/en/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -35
  210. package/docs/en/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -4
  211. package/docs/en/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -22
  212. package/docs/en/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -17
  213. package/docs/en/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -22
  214. package/docs/en/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -4
  215. package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -55
  216. package/docs/en/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -55
  217. package/docs/en/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -43
  218. package/docs/en/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -31
  219. package/docs/en/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -65
  220. package/docs/en/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -90
  221. package/docs/en/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -4
  222. package/docs/en/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -33
  223. package/docs/en/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -35
  224. package/docs/en/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -44
  225. package/docs/en/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -15
  226. package/docs/en/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -4
  227. package/docs/en/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -18
  228. package/docs/en/guides/topic-detail/generator/plugin/develop.mdx +0 -125
  229. package/docs/en/guides/topic-detail/generator/plugin/use.mdx +0 -61
  230. package/docs/en/guides/topic-detail/generator/project.mdx +0 -118
  231. package/docs/zh/apis/app/hooks/api/framework/_category_.json +0 -4
  232. package/docs/zh/apis/app/hooks/api/functions/_category_.json +0 -4
  233. package/docs/zh/apis/app/hooks/api/functions/app.mdx +0 -12
  234. package/docs/zh/apis/app/hooks/api/functions/common.mdx +0 -9
  235. package/docs/zh/guides/topic-detail/generator/codesmith/_category_.json +0 -4
  236. package/docs/zh/guides/topic-detail/generator/codesmith/api/_category_.json +0 -4
  237. package/docs/zh/guides/topic-detail/generator/codesmith/api/app.mdx +0 -152
  238. package/docs/zh/guides/topic-detail/generator/codesmith/api/ejs.mdx +0 -56
  239. package/docs/zh/guides/topic-detail/generator/codesmith/api/fs.mdx +0 -54
  240. package/docs/zh/guides/topic-detail/generator/codesmith/api/git.mdx +0 -49
  241. package/docs/zh/guides/topic-detail/generator/codesmith/api/handlebars.mdx +0 -56
  242. package/docs/zh/guides/topic-detail/generator/codesmith/api/json.mdx +0 -56
  243. package/docs/zh/guides/topic-detail/generator/codesmith/api/npm.mdx +0 -47
  244. package/docs/zh/guides/topic-detail/generator/codesmith/develop.mdx +0 -53
  245. package/docs/zh/guides/topic-detail/generator/codesmith/introduce.mdx +0 -59
  246. package/docs/zh/guides/topic-detail/generator/codesmith/run-in-js.mdx +0 -47
  247. package/docs/zh/guides/topic-detail/generator/codesmith/structure.mdx +0 -89
  248. package/docs/zh/guides/topic-detail/generator/config/_category_.json +0 -4
  249. package/docs/zh/guides/topic-detail/generator/config/app.mdx +0 -82
  250. package/docs/zh/guides/topic-detail/generator/config/common.mdx +0 -100
  251. package/docs/zh/guides/topic-detail/generator/config/module.mdx +0 -42
  252. package/docs/zh/guides/topic-detail/generator/config/monorepo.mdx +0 -28
  253. package/docs/zh/guides/topic-detail/generator/plugin/abstract.mdx +0 -23
  254. package/docs/zh/guides/topic-detail/generator/plugin/api/file/_category_.json +0 -4
  255. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addFile.mdx +0 -52
  256. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addHelper.mdx +0 -26
  257. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addManyFile.mdx +0 -55
  258. package/docs/zh/guides/topic-detail/generator/plugin/api/file/addPartial.mdx +0 -26
  259. package/docs/zh/guides/topic-detail/generator/plugin/api/file/introduce.mdx +0 -39
  260. package/docs/zh/guides/topic-detail/generator/plugin/api/file/rmDir.mdx +0 -24
  261. package/docs/zh/guides/topic-detail/generator/plugin/api/file/rmFile.mdx +0 -24
  262. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateJSONFile.mdx +0 -54
  263. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateModernConfig.mdx +0 -27
  264. package/docs/zh/guides/topic-detail/generator/plugin/api/file/updateTextRawFile.mdx +0 -33
  265. package/docs/zh/guides/topic-detail/generator/plugin/api/git/_category_.json +0 -4
  266. package/docs/zh/guides/topic-detail/generator/plugin/api/git/gitAddAndCommit.mdx +0 -20
  267. package/docs/zh/guides/topic-detail/generator/plugin/api/git/initGitRepo.mdx +0 -16
  268. package/docs/zh/guides/topic-detail/generator/plugin/api/git/isInGitRepo.mdx +0 -16
  269. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/_category_.json +0 -4
  270. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/afterForged.mdx +0 -35
  271. package/docs/zh/guides/topic-detail/generator/plugin/api/hook/onForged.mdx +0 -35
  272. package/docs/zh/guides/topic-detail/generator/plugin/api/info/_category_.json +0 -4
  273. package/docs/zh/guides/topic-detail/generator/plugin/api/info/isFileExit.mdx +0 -22
  274. package/docs/zh/guides/topic-detail/generator/plugin/api/info/locale.mdx +0 -17
  275. package/docs/zh/guides/topic-detail/generator/plugin/api/info/readDir.mdx +0 -22
  276. package/docs/zh/guides/topic-detail/generator/plugin/api/input/_category_.json +0 -4
  277. package/docs/zh/guides/topic-detail/generator/plugin/api/input/addInputAfter.mdx +0 -57
  278. package/docs/zh/guides/topic-detail/generator/plugin/api/input/addInputBefore.mdx +0 -56
  279. package/docs/zh/guides/topic-detail/generator/plugin/api/input/setInput.mdx +0 -43
  280. package/docs/zh/guides/topic-detail/generator/plugin/api/input/setInputValue.mdx +0 -29
  281. package/docs/zh/guides/topic-detail/generator/plugin/api/input/type.mdx +0 -65
  282. package/docs/zh/guides/topic-detail/generator/plugin/api/introduce.mdx +0 -92
  283. package/docs/zh/guides/topic-detail/generator/plugin/api/new/_category_.json +0 -4
  284. package/docs/zh/guides/topic-detail/generator/plugin/api/new/createElement.mdx +0 -33
  285. package/docs/zh/guides/topic-detail/generator/plugin/api/new/createSubProject.mdx +0 -35
  286. package/docs/zh/guides/topic-detail/generator/plugin/api/new/enableFunc.mdx +0 -44
  287. package/docs/zh/guides/topic-detail/generator/plugin/api/new/introduce.mdx +0 -15
  288. package/docs/zh/guides/topic-detail/generator/plugin/api/npm/_category_.json +0 -4
  289. package/docs/zh/guides/topic-detail/generator/plugin/api/npm/install.mdx +0 -16
  290. package/docs/zh/guides/topic-detail/generator/plugin/develop.mdx +0 -125
  291. package/docs/zh/guides/topic-detail/generator/plugin/use.mdx +0 -61
  292. package/docs/zh/guides/topic-detail/generator/project.mdx +0 -118
@@ -0,0 +1,184 @@
1
+ ---
2
+ sidebar_position: 1
3
+ ---
4
+
5
+ # context
6
+
7
+ 生成器插件在 `main` 文件中默认导出了一个函数,函数参数为 `context`,生成器插件提供的所有 API 都是由这个 `context` 提供的。
8
+
9
+ ## 类型
10
+
11
+ 我们先大概了解一下 `context` 的类型定义:
12
+
13
+ ```ts
14
+ export interface IPluginContext {
15
+ locale?: string;
16
+ addInputBefore: (key: string, input: Schema) => void;
17
+ addInputAfter: (key: string, input: Schema) => void;
18
+ setInput: (key: string, field: string, value: unknown) => void;
19
+ setInputValue: (value: Record<string, unknown>) => void;
20
+ setDefaultConfig: (value: Record<string, unknown>) => void;
21
+ isFileExist: (fileName: string) => Promise<boolean>;
22
+ readDir: (dir: string) => Promise<string[]>;
23
+ setGitMessage: (gitMessage: string) => void;
24
+ onForged: (func: PluginForgedFunc) => void;
25
+ afterForged: (func: PluginAfterForgedFunc) => void;
26
+ }
27
+ ```
28
+
29
+ `context` 提供的内容主要分为三类:
30
+
31
+ - 获取当前生成器执行环境信息
32
+
33
+ - 操作 input 输入
34
+
35
+ - 生成器插件生命周期函数
36
+
37
+ 下面将从这三个分类分别介绍生成器插件 API。
38
+
39
+
40
+ ### 获取信息
41
+
42
+ #### locale
43
+
44
+ 获取生成器插件执行环境的语言。`@modern-js/create` 提供了 `zh` 和 `en` 两种语言,这里即为对应的这两种值。
45
+
46
+ #### isFileExist
47
+
48
+ 判断文件是否存在。我们很多时候需要在定义操作前确认目标项目文件是否已经存在,可以直接通过该 API 获取。
49
+
50
+ 例如我们需要获取 `package.json` 文件是否存在,然后做相应的操作:
51
+
52
+ ```ts
53
+ const isExist = await context.isFileExist('package.json');
54
+ if (isExist) {
55
+ ...
56
+ }
57
+ ```
58
+
59
+ #### readDir
60
+
61
+ 获取文件夹内文件列表。我们很多时候需要在定义操作前获取目标项目文件夹下面文件列表,可以直接通过该 API 获取。
62
+
63
+ 例如我们需要获取 src 文件夹下所有文件,然后进行相应操作:
64
+
65
+ ```ts
66
+ const files = await context.readDir('src');
67
+
68
+ files.map(name => {
69
+ ...
70
+ });
71
+ ```
72
+
73
+ ### input 操作
74
+
75
+ input 操作中使用的 key 参数可参考[配置参数](/guides/topic-detail/generator/create/config.html),需要在使用对应工程方案下的 key,即不支持在 `solution` 和 `scenes`。
76
+
77
+ input 操作中的 input 参数对应的 Schema 类型可参考 [Input](/guides/topic-detail/generator/plugin/api/input.html)。
78
+
79
+ #### addInputBefore
80
+
81
+ 在指定的 input `key` 前添加问题。
82
+
83
+ 例如:
84
+
85
+ ```ts
86
+ context.addInputBefore('packageManager', {
87
+ type: 'object',
88
+ properties: {
89
+ language: {
90
+ type: 'string',
91
+ title: '开发语言',
92
+ enum: [
93
+ { label: 'TS', value: 'ts' },
94
+ { label: 'ES6+', value: 'js' },
95
+ ],
96
+ },
97
+ },
98
+ });
99
+ ```
100
+
101
+ #### addInputAfter
102
+
103
+ 在指定的 input `key` 后添加问题。
104
+
105
+ 例如:
106
+
107
+ ```ts
108
+ context.addInputAfter('packageManager', {
109
+ type: 'object',
110
+ properties: {
111
+ language: {
112
+ type: 'string',
113
+ title: '开发语言',
114
+ enum: [
115
+ { label: 'TS', value: 'ts' },
116
+ { label: 'ES6+', value: 'js' },
117
+ ],
118
+ },
119
+ },
120
+ });
121
+ ```
122
+
123
+ :::info
124
+ 1. 添加问题的 `key` 不能和 Modern.js 提供的工程方案自身的问题的 `key` 重复。
125
+ 2. 添加问题 `addInputAfter` 的优先级高于 `addInputBefore`,当同时对一个 key 添加 After 问题和对其后一个key 添加 Before 问题时,After 问题会在 Before 之前。
126
+ 3. 当需要在相同 `key` 前面或者后面添加多个问题时,可多次调用该方法,问题的顺序会按照调用顺序进行排列。
127
+
128
+ :::
129
+
130
+ #### setInput
131
+
132
+ 设置指定 input `key` 的属性。
133
+
134
+ 例如设置 `packageName` 的 `title` 属性:
135
+
136
+ ```ts
137
+ context.setInput('packageName', 'title', "展示名称");
138
+ ```
139
+
140
+ :::info
141
+ 对于 Modern.js 工程方案提供的输入选项,只支持删除,不支持增加,增加会造成代码中的逻辑判断存在问题。
142
+ :::
143
+
144
+
145
+ #### setInputValue
146
+
147
+ 设置指定 input `key` 的选项默认值。
148
+
149
+ 例如设置 `packageManager` 的默认值:
150
+
151
+ ```ts
152
+ context.setInputValue({
153
+ packageManager: 'npm',
154
+ });
155
+ ```
156
+
157
+ :::info
158
+ 设置完成后,该问题还是需要交互,只是会使用生成器插件配置的默认值。
159
+ :::
160
+
161
+ #### setDefaultConfig
162
+
163
+ 设置指定 input `key` 的默认值。
164
+
165
+ 例如设置 `packageManager` 的默认值:
166
+
167
+ ```ts
168
+ context.setDefaultConfig({
169
+ packageManager: 'npm',
170
+ });
171
+ ```
172
+
173
+ :::info
174
+ 设置完成后,将不再展示对应问题,和 `@modern-js/create` 制定 `--config` 行为一致。不支持设置 `vertical` 和 `projectOrg`。
175
+ :::
176
+
177
+ #### setGitMessage
178
+
179
+ 设置 Git 初始提交信息。Modern.js 默认 Git 初始化提交信息为 `feat: init`,通过该函数可以修改。
180
+
181
+
182
+ ### 生命周期函数
183
+
184
+ 生命周期函数比较复杂,将通过后面两节 [`onForged`](/guides/topic-detail/generator/plugin/api/onForged.html) 和 [`afterForged`](/guides/topic-detail/generator/plugin/api/afterForged.html) 分别介绍。
@@ -0,0 +1,124 @@
1
+ ---
2
+ sidebar_position: 4
3
+ ---
4
+
5
+ # Input
6
+
7
+ 生成器插件提供了 Input 的方式完成与用户的问题交互,使用 JSON Schema 的方式进行定义:
8
+
9
+ 例如:
10
+
11
+ ```js
12
+ const schema = {
13
+ type: 'object',
14
+ properties: {
15
+ language: {
16
+ type: 'string',
17
+ title: '开发语言',
18
+ enum: [
19
+ { label: 'TS', value: 'ts' },
20
+ { label: 'ES6+', value: 'js' },
21
+ ],
22
+ },
23
+ },
24
+ };
25
+ ```
26
+
27
+ JSON Schema 的格式参考了开源的 [Formily](https://formilyjs.org/) Schema 的格式,下面将对支持的字段进行介绍:
28
+
29
+ ## type
30
+
31
+ 定义当前 Schema 类型,当前支持的类型为 `string`、`number` 和 `object`。字符串输入和下拉选项都需要使用 `string` 类型。 `object` 类型用于实现 Schema 之间嵌套,需要配和 `properties` 属性使用。
32
+
33
+ ## title
34
+
35
+ 定义当前 Schema 展示名称。
36
+
37
+ ## default
38
+
39
+ 定义当前 Schema 的默认值。
40
+
41
+ ## enum
42
+
43
+ 当前 Schema 为下列选项时,定义选项内容。
44
+
45
+ 子项支持 `string` 或者 `{ label: string; value: string}` 类型,当下拉选项中值和展示值相同时,可直接使用 `string` 定义。
46
+
47
+ 当需要表示多选选项时,设置 `default` 字段为 `[]` 即可。
48
+
49
+ ## x-validator
50
+
51
+ 当前 Schema 的校验规则。当 Schema 为输入类型时,在输入完成后会自动完成校验。
52
+
53
+ 这里校验规则支持[ Formily 提供的校验规则](https://formilyjs.org/zh-CN/guide/advanced/validate),例如最大值为 5:
54
+
55
+ ```js
56
+ const schema = {
57
+ type: 'object',
58
+ properties: {
59
+ max_5: {
60
+ type: 'number',
61
+ title: '最大值(>5报错)',
62
+ 'x-validator': {
63
+ maximum: 5,
64
+ },
65
+ },
66
+ },
67
+ };
68
+ ```
69
+
70
+ 也支持直接使用验证函数:
71
+
72
+ ```js
73
+ const schema = {
74
+ type: 'object',
75
+ properties: {
76
+ path: {
77
+ type: 'string',
78
+ title: '只能包含数字和字母',
79
+ 'x-validator': value => {
80
+ if (!/^[0-9a-zA-Z]*$/g.test(value)) {
81
+ return '格式不正确';
82
+ }
83
+ return '';
84
+ },
85
+ },
86
+ },
87
+ };
88
+ ```
89
+
90
+ ## x-reactions
91
+
92
+ 使用 Schema 之间的联动,这里和[ Formily 联动规则](https://formilyjs.org/zh-CN/guide/advanced/linkages)完全相同。
93
+
94
+ 例如:
95
+
96
+ ```js
97
+ const schema = {
98
+ type: 'object',
99
+ properties: {
100
+ name: {
101
+ type: 'string',
102
+ title: '名称',
103
+ },
104
+ path: {
105
+ type: 'string',
106
+ title: '路径',
107
+ 'x-reactions': [
108
+ {
109
+ dependencies: ['name'],
110
+ fulfill: {
111
+ state: {
112
+ value: '{{$deps[0]}}',
113
+ },
114
+ },
115
+ },
116
+ ],
117
+ },
118
+ },
119
+ };
120
+ ```
121
+
122
+ ## properties
123
+
124
+ 组织当前 Schema 的结构,定义子表单。`properties` 为对象,`key` 为 Schema 关键字,`value` 为上述描述的 Schema 对象。
@@ -0,0 +1,310 @@
1
+ ---
2
+ sidebar_position: 2
3
+ ---
4
+
5
+ # onForged
6
+
7
+ `onForged` 为生成器插件中用于文件操作的生命周期函数。
8
+
9
+ ## 类型
10
+
11
+ ```ts
12
+ export type ForgedAPI = {
13
+ addFile: (params: AddFileParams) => Promise<void>;
14
+ addManyFiles: (params: AddManyFilesParams) => Promise<void>;
15
+ updateJSONFile: (fileName: string, updateInfo: Record<string, unknown>) => Promise<void>;
16
+ updateTextRawFile: (fileName: string, update: (content: string[]) => string[]) => Promise<void>;
17
+ updateModernConfig: (updateInfo: Record<string, any>) => Promise<void>;
18
+ rmFile: (fileName: string) => Promise<void>;
19
+ rmDir: (dirName: string) => Promise<void>;
20
+ addHelper: (name: string, fn: Handlebars.HelperDelegate) => void;
21
+ addPartial: (name: string, str: Handlebars.Template) => void;
22
+ createElement: (element: ActionElement, params: Record<string, unknown>) => Promise<void>;
23
+ enableFunc: (func: ActionFunction, params?: Record<string, unknown> | undefined) => Promise<void>;
24
+ };
25
+
26
+ export type PluginForgedFunc = (
27
+ api: ForgedAPI,
28
+ inputData: Record<string, unknown>,
29
+ ) => void | Promise<void>;
30
+
31
+ export interface IPluginContext {
32
+ onForged: (func: PluginForgedFunc) => void;
33
+ ...
34
+ }
35
+ ```
36
+
37
+ `onForged` 参数为一个回调函数,回调函数参数为 `api` 和 `input`,分别用于提供该生命周期函数提供的 API 及当前输入信息。
38
+
39
+ ## 概念
40
+
41
+ ### 文件类型
42
+
43
+ 生成器插件将文件类型分为撕四类:
44
+
45
+ - 文本文件
46
+
47
+ 纯文本内容文件,可使用 [Handlebars](https://handlebarsjs.com/) 或 [EJS](https://ejs.co/) 进行模板处理的文件。
48
+
49
+ - 二进制文件
50
+
51
+ 图片、音频、视频等文件。
52
+
53
+ - JSON 文件
54
+
55
+ JSON 格式的文件。
56
+
57
+ - 文本列表文件
58
+
59
+ 文件由行文本组成的文件,例如 `.gitignore`, `.editorconfig`, `.npmrc`。
60
+
61
+ 对应四种文件的类型定义为:
62
+
63
+ ```ts
64
+ export enum FileType {
65
+ Text = 'text',
66
+ Binary = 'binary',
67
+ Json = 'json',
68
+ TextRaw = 'textRaw',
69
+ }
70
+ ```
71
+
72
+ ## API
73
+
74
+ 下面将分别介绍 api 参数提供的 API。
75
+
76
+ ### addFile
77
+
78
+ 添加单个文件。
79
+
80
+ 参数类型:
81
+
82
+ ```ts
83
+ export interface AddFileParams {
84
+ type: FileType;
85
+ file: string;
86
+ template?: string;
87
+ templateFile?: string;
88
+ force?: boolean;
89
+ data?: Record<string, string>;
90
+ }
91
+ ```
92
+
93
+ - `type`: 文件类型。
94
+ - `file`:目标文件路径,相对于目标项目目录的相对路径。
95
+ - `template`:模板内容,该字段值可直接用于模板渲染文件。优先级低于 `templateFile`。
96
+ - `templateFile`:模板文件路径,相对于 templates 目录的相对路径即可。
97
+ - `force`:是否强制覆盖,当目标文件存在时是否强制覆盖,默认为 false。
98
+ - `data`:模板渲染数据。
99
+
100
+ :::info
101
+ 文本类型文件默认使用 Handlebars 进行处理,当模板文件以 `.ejs` 结尾的话,会使用 [EJS](https://ejs.co/) 进行模板渲染。
102
+ :::
103
+
104
+ 例如添加模板文件 `App.tsx.hanlebars` 到 `src/App.tsx` 中:
105
+
106
+ ```ts
107
+ context.onForged(async (api: ForgedAPI, _input: Record<string, unknown>) => {
108
+ await api.addFile({
109
+ type: FileType.Text,
110
+ file: `src/App.tsx`,
111
+ templateFile: `App.tsx.handlebars`,
112
+ });
113
+ })
114
+ ```
115
+
116
+ ### addManyFiless
117
+
118
+ 批量添加文件,一般用于添加多个文件到同一个目标目录。
119
+
120
+ 参数类型:
121
+
122
+ ```ts
123
+ export interface AddManyFilesParams {
124
+ type: FileType;
125
+ destination: string;
126
+ templateFiles: string[] | (() => string[]);
127
+ templateBase?: string;
128
+ fileNameFunc?: (name: string) => string;
129
+ data?: Record<string, string>;
130
+ }
131
+ ```
132
+
133
+ - `type`: 文件类型。
134
+ - `destination`:目标文件夹,相对于目标项目目录的相对路径。
135
+ - `templateFiles`:模板文件列表,支持 [globby](https://www.npmjs.com/package/globby) 正则表达式
136
+ - `templateBase`:模板文件的公共路径,使用该参数时目标文件会自动删除该路径。
137
+ - `fileNameFunc`:重命名文件函数,添加文件过程中会依次将文件名传入到该函数,可以根据需要进行重命名。
138
+ - `data`:模板渲染数据。
139
+
140
+ 例如将模板文件 `src-ts` 目录下所有文件渲染到 `src` 目录:
141
+
142
+ ```ts
143
+ context.onForged(async (api: ForgedAPI, _input: Record<string, unknown>) => {
144
+ await api.addManyFiles({
145
+ type: FileType.Text,
146
+ destination: 'src',
147
+ templateFiles: ['src-ts/**/*'],
148
+ templateBase: 'src-ts',
149
+ fileNameFunc: name => name.replace('.handlebars', ''),
150
+ });
151
+ })
152
+ ```
153
+
154
+ ### updateJSONFile
155
+
156
+ 更新 JSON 文件字段。
157
+
158
+ 参数类型:
159
+
160
+ ```ts
161
+ fileName: strings
162
+ updateInfo: Record<string, unknown>
163
+ ```
164
+
165
+ - `fileName`:JSON 文件路径,相对于目标项目的路径。
166
+ - `updateInfo`:更新信息,嵌套字段更新需要平铺,不然会更新整体造成内容丢失。
167
+
168
+ 例如更新 `package.json` 的 name 字段:
169
+
170
+ ```ts
171
+ context.onForged(async (api: ForgedAPI, _input: Record<string, unknown>) => {
172
+ await api.updateJSONFile('package.json', { name: 'new_name' });
173
+ })
174
+ ```
175
+
176
+ 例如更新 `dependencies` 的 `react-dom` 版本:
177
+
178
+ ```ts
179
+ context.onForged(async (api: ForgedAPI, _input: Record<string, unknown>) => {
180
+ await api.updateJSONFile('package.json', {
181
+ 'dependencies.react-dom': '^18',
182
+ });
183
+ })
184
+ ```
185
+
186
+ ### updateTextRawFile
187
+
188
+ 更新文本列表文件内容。
189
+
190
+ 参数类型:
191
+
192
+ ```ts
193
+ fileName: string
194
+ update: (content: string[]) => string[]
195
+ ```
196
+
197
+ - `fileName`: 文本列表文件路径,相对于目标项目的路径。
198
+ - `update`:更新函数,参数为当前文件内容以 `\n` 进行分割的数组,返回值也为修改完成后的数组,`@modern-js/create` 会自动以 `\n` 合并,并写入源文件。
199
+
200
+ 例如 `.gitinore` 文件中增加 dist 目录:
201
+
202
+ ```ts
203
+ context.onForged(async (api: ForgedAPI, _input: Record<string, unknown>) => {
204
+ await api.updateTextRawFile('.gitinore', (content) => [...content, 'dist']);
205
+ })
206
+ ```
207
+
208
+ ### updateModernConfig(不推荐)
209
+
210
+ Modern.js 配置除了可以在 `modern.config.[tj]s` 中配置外,还支持 `package.json` 中配置 `modernConfig` 配置。该函数用于更新该字段。
211
+
212
+ 参数类型:
213
+
214
+ ```ts
215
+ updateInfo: Record<string, any>
216
+ ```
217
+
218
+ - `updateInfo`: 更新内容信息。updateModernConfig 是基于 updateJSONFile 的封装,将自动更新到 `modernConfig` 字段下,updateInfo 中只需填写 `modernConfig` 下的配置字段即可。
219
+
220
+ 例如开启 ssr:
221
+
222
+ ```ts
223
+ context.onForged(async (api: ForgedAPI, _input: Record<string, unknown>) => {
224
+ await api.updateModernConfig({ 'server.ssr': true });
225
+ })
226
+ ```
227
+
228
+ ### rmFile
229
+
230
+ 删除文件。
231
+
232
+ 参数类型:
233
+
234
+ ```ts
235
+ fileName: string
236
+ ```
237
+
238
+ - `fileName`:删除的文件路径,相对于目标项目的路径。
239
+
240
+ ### rmDir
241
+
242
+ 删除文件夹。
243
+
244
+ 参数类型:
245
+
246
+ ```ts
247
+ dirName: string
248
+ ```
249
+
250
+ - `dirName`:删除的文件夹路径,相对于目标项目的路径。
251
+
252
+ ### addHelper
253
+
254
+ 添加 handlebrs 渲染的[自定义 Helper](https://handlebarsjs.com/guide/#custom-helpers)。
255
+
256
+ 参数类型:
257
+
258
+ ```ts
259
+ name: string
260
+ fn: Handlebars.HelperDelegate
261
+ ```
262
+
263
+ - `name`:Helper 函数名称。
264
+ - `fn`:Helper 函数实现。
265
+
266
+ ### addPartial
267
+
268
+ 添加 Handlebars 渲染的 [Partial](https://handlebarsjs.com/guide/partials.html#basic-partials)。
269
+
270
+ 参数类型:
271
+
272
+ ```ts
273
+ name: string
274
+ str: Handlebars.Template
275
+ ```
276
+
277
+ - `name`:Partial 名称。
278
+ - `str`:Partial 的模板字符串。
279
+
280
+ ### createElement
281
+
282
+ 自动调用 new 命令创建工程元素。
283
+
284
+ 参数类型:
285
+
286
+ ```ts
287
+ element: ActionElement
288
+ params: Record<string, unknown>
289
+ ```
290
+
291
+ - `element`:工程元素类型,新建入口或者新建自定义 Web Server 源码目录。
292
+ - `params`:对应创建工程元素的其他参数。
293
+
294
+ ### enableFunc
295
+
296
+ 自动调用 new 命令开启可选功能。
297
+
298
+ 参数类型:
299
+
300
+ ```ts
301
+ func: ActionFunction
302
+ params?: Record<string, unknown>
303
+ ```
304
+
305
+ - `func`:开启功能名称。
306
+ - `params`:对应开启功能的其他参数。
307
+
308
+ :::info
309
+ 创建工程元素和开启功能配置可参考[配置参数](/guides/topic-detail/generator/new/config.html)。
310
+ :::
@@ -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` 参数时,工程方案场景下将会逐一列举出对应的生成器插件名称供选择。