@modern-js/main-doc 2.69.5 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (540) hide show
  1. package/docs/en/{_meta.json → _nav.json} +5 -1
  2. package/docs/en/apis/app/commands.mdx +2 -3
  3. package/docs/en/apis/app/hooks/src/entry.mdx +1 -5
  4. package/docs/en/apis/app/hooks/src/entry.server.mdx +4 -5
  5. package/docs/en/apis/app/hooks/src/routes.mdx +2 -2
  6. package/docs/en/apis/app/runtime/_meta.json +0 -18
  7. package/docs/en/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  8. package/docs/en/apis/app/runtime/router/router.mdx +1 -1
  9. package/docs/en/apis/app/runtime/utility/css-in-js.mdx +3 -2
  10. package/docs/en/community/blog/v2-release-note.mdx +0 -2
  11. package/docs/en/community/contributing-guide.mdx +10 -12
  12. package/docs/en/components/bff-upload.mdx +16 -12
  13. package/docs/en/components/build-output.mdx +45 -0
  14. package/docs/en/components/debug-app.mdx +1 -1
  15. package/docs/en/components/enable-bff-caution.mdx +2 -2
  16. package/docs/en/components/enable-bff.mdx +38 -8
  17. package/docs/en/components/enable-ssg.mdx +48 -0
  18. package/docs/en/components/entry-scan-logic.mdx +7 -0
  19. package/docs/en/components/init-app.mdx +40 -17
  20. package/docs/en/components/international/install-command.mdx +9 -0
  21. package/docs/en/components/international/introduce.mdx +2 -0
  22. package/docs/en/components/module-federation.mdx +4 -4
  23. package/docs/en/components/new-entry-tooltip.mdx +0 -0
  24. package/docs/en/components/nodeVersion.mdx +2 -6
  25. package/docs/en/components/prerequisites.mdx +1 -1
  26. package/docs/en/components/ua-polyfill.mdx +16 -12
  27. package/docs/en/components/upgrade-browserslist.mdx +0 -0
  28. package/docs/en/configure/_meta.json +7 -8
  29. package/docs/en/configure/app/bff/cross-project.mdx +24 -0
  30. package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
  31. package/docs/en/configure/app/dev/server.mdx +103 -0
  32. package/docs/en/configure/app/dev/setup-middlewares.mdx +4 -22
  33. package/docs/en/configure/app/html/app-icon.mdx +1 -23
  34. package/docs/en/configure/app/output/inline-scripts.mdx +1 -1
  35. package/docs/en/configure/app/output/override-browserslist.mdx +6 -4
  36. package/docs/en/configure/app/output/source-map.mdx +6 -3
  37. package/docs/en/configure/app/output/ssg.mdx +12 -43
  38. package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
  39. package/docs/en/configure/app/performance/build-cache.mdx +0 -4
  40. package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
  41. package/docs/en/configure/app/resolve/alias.mdx +13 -0
  42. package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
  43. package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
  44. package/docs/en/configure/app/resolve/extensions.mdx +18 -0
  45. package/docs/en/configure/app/runtime/0-intro.mdx +2 -51
  46. package/docs/en/configure/app/security/check-syntax.mdx +1 -1
  47. package/docs/en/configure/app/server/port.mdx +1 -21
  48. package/docs/en/configure/app/server/rsc.mdx +30 -0
  49. package/docs/en/configure/app/server/ssr.mdx +20 -9
  50. package/docs/en/configure/app/source/decorators.mdx +4 -2
  51. package/docs/en/configure/app/source/entries.mdx +0 -2
  52. package/docs/en/configure/app/source/main-entry-name.mdx +4 -4
  53. package/docs/en/configure/app/source/transform-import.mdx +1 -59
  54. package/docs/en/configure/app/tools/bundler-chain.mdx +5 -5
  55. package/docs/en/configure/app/tools/css-extract.mdx +1 -1
  56. package/docs/en/configure/app/tools/dev-server.mdx +14 -248
  57. package/docs/en/configure/app/tools/html-plugin.mdx +3 -3
  58. package/docs/en/configure/app/tools/lightningcss-loader.mdx +0 -1
  59. package/docs/en/configure/app/tools/swc.mdx +1 -43
  60. package/docs/en/configure/app/usage.mdx +7 -17
  61. package/docs/en/guides/_meta.json +1 -2
  62. package/docs/en/guides/advanced-features/_meta.json +6 -0
  63. package/docs/en/guides/advanced-features/bff/cross-project.mdx +1 -7
  64. package/docs/en/guides/advanced-features/bff/extend-server.mdx +18 -3
  65. package/docs/en/guides/advanced-features/bff/frameworks.mdx +1 -1
  66. package/docs/en/guides/advanced-features/bff/function.mdx +2 -6
  67. package/docs/en/guides/advanced-features/bff/sdk.mdx +3 -3
  68. package/docs/en/guides/advanced-features/build-performance.mdx +23 -26
  69. package/docs/en/guides/advanced-features/compatibility.mdx +53 -9
  70. package/docs/en/guides/advanced-features/international/_meta.json +11 -0
  71. package/docs/en/guides/advanced-features/international/advanced.mdx +193 -0
  72. package/docs/en/guides/advanced-features/international/api.mdx +400 -0
  73. package/docs/en/guides/advanced-features/international/basic.mdx +417 -0
  74. package/docs/en/guides/advanced-features/international/best-practices.mdx +135 -0
  75. package/docs/en/guides/advanced-features/international/configuration.mdx +437 -0
  76. package/docs/en/guides/advanced-features/international/locale-detection.mdx +276 -0
  77. package/docs/en/guides/advanced-features/international/quick-start.mdx +154 -0
  78. package/docs/en/guides/advanced-features/international/resource-loading.mdx +417 -0
  79. package/docs/en/guides/advanced-features/international/routing.mdx +212 -0
  80. package/docs/en/guides/advanced-features/international.mdx +37 -0
  81. package/docs/en/guides/advanced-features/low-level.mdx +21 -16
  82. package/docs/en/guides/advanced-features/page-performance/code-split.mdx +4 -4
  83. package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  84. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
  85. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
  86. package/docs/en/guides/advanced-features/rspack-start.mdx +2 -22
  87. package/docs/en/guides/advanced-features/server-monitor/logger.mdx +0 -4
  88. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +62 -34
  89. package/docs/en/guides/advanced-features/web-server.mdx +82 -299
  90. package/docs/en/guides/basic-features/_meta.json +6 -1
  91. package/docs/en/guides/basic-features/css/css-in-js.mdx +46 -11
  92. package/docs/en/guides/basic-features/css/css-modules.mdx +5 -17
  93. package/docs/en/guides/basic-features/css/css.mdx +3 -3
  94. package/docs/en/guides/basic-features/css/tailwindcss.mdx +5 -89
  95. package/docs/en/guides/basic-features/data/data-cache.mdx +5 -1
  96. package/docs/en/guides/basic-features/data/data-fetch.mdx +4 -4
  97. package/docs/en/guides/basic-features/data/data-write.mdx +2 -2
  98. package/docs/en/guides/basic-features/debug/mock.mdx +4 -1
  99. package/docs/en/guides/basic-features/debug/proxy.mdx +0 -8
  100. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +5 -5
  101. package/docs/en/guides/basic-features/deploy.mdx +25 -18
  102. package/docs/en/guides/basic-features/env-vars.mdx +1 -1
  103. package/docs/en/guides/basic-features/html.mdx +1 -1
  104. package/docs/en/guides/basic-features/output-files.mdx +3 -3
  105. package/docs/en/guides/basic-features/render/_meta.json +1 -1
  106. package/docs/en/guides/basic-features/render/before-render.mdx +16 -23
  107. package/docs/en/guides/basic-features/render/overview.mdx +51 -0
  108. package/docs/en/guides/basic-features/render/rsc.mdx +394 -0
  109. package/docs/en/guides/basic-features/render/ssg.mdx +26 -62
  110. package/docs/en/guides/basic-features/render/ssr-cache.mdx +6 -6
  111. package/docs/en/guides/basic-features/render/ssr.mdx +31 -31
  112. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +29 -9
  113. package/docs/en/guides/basic-features/routes/_meta.json +1 -0
  114. package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
  115. package/docs/en/guides/basic-features/{routes.mdx → routes/routes.mdx} +7 -110
  116. package/docs/en/guides/basic-features/static-assets/json-files.mdx +21 -3
  117. package/docs/en/guides/basic-features/static-assets.mdx +2 -2
  118. package/docs/en/guides/concept/builder.mdx +24 -9
  119. package/docs/en/guides/concept/entries.mdx +139 -147
  120. package/docs/en/guides/get-started/glossary.mdx +0 -18
  121. package/docs/en/guides/get-started/introduction.mdx +1 -4
  122. package/docs/en/guides/get-started/quick-start.mdx +8 -73
  123. package/docs/en/guides/get-started/tech-stack.mdx +7 -25
  124. package/docs/en/guides/get-started/upgrade.mdx +30 -23
  125. package/docs/en/guides/topic-detail/_meta.json +0 -12
  126. package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -1
  127. package/docs/en/guides/topic-detail/module-federation/application.mdx +16 -15
  128. package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
  129. package/docs/en/guides/topic-detail/module-federation/introduce.mdx +5 -4
  130. package/docs/en/guides/topic-detail/module-federation/ssr.mdx +50 -2
  131. package/docs/en/guides/topic-detail/module-federation/usage.mdx +10 -30
  132. package/docs/en/guides/troubleshooting/builder.mdx +3 -82
  133. package/docs/en/guides/troubleshooting/cli.mdx +6 -30
  134. package/docs/en/guides/troubleshooting/dependencies.mdx +22 -22
  135. package/docs/en/plugin/cli-plugins/api.mdx +4 -5
  136. package/docs/en/plugin/cli-plugins/migration.mdx +33 -48
  137. package/docs/en/plugin/introduction.mdx +39 -27
  138. package/docs/en/plugin/official/_meta.json +0 -5
  139. package/docs/en/plugin/official/cli-plugins/_meta.json +1 -1
  140. package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  141. package/docs/en/plugin/official/cli-plugins.mdx +0 -2
  142. package/docs/en/plugin/plugin-system.mdx +68 -61
  143. package/docs/en/plugin/runtime-plugins/api.mdx +62 -59
  144. package/docs/en/plugin/runtime-plugins/migration.mdx +29 -20
  145. package/docs/en/tutorials/_meta.json +0 -10
  146. package/docs/en/tutorials/examples/csr-auth.mdx +1 -1
  147. package/docs/en/tutorials/foundations/introduction.mdx +9 -25
  148. package/docs/zh/{_meta.json → _nav.json} +10 -6
  149. package/docs/zh/apis/app/commands.mdx +2 -3
  150. package/docs/zh/apis/app/hooks/src/entry.mdx +1 -5
  151. package/docs/zh/apis/app/hooks/src/entry.server.mdx +4 -5
  152. package/docs/zh/apis/app/hooks/src/routes.mdx +2 -2
  153. package/docs/zh/apis/app/runtime/_meta.json +0 -18
  154. package/docs/zh/apis/app/runtime/bff/use-hono-context.mdx +2 -2
  155. package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +3 -2
  156. package/docs/zh/community/blog/v2-release-note.mdx +0 -2
  157. package/docs/zh/community/contributing-guide.mdx +10 -12
  158. package/docs/zh/components/auto-upgrade.mdx +0 -0
  159. package/docs/zh/components/bff-upload.mdx +8 -5
  160. package/docs/zh/components/build-output.mdx +45 -0
  161. package/docs/zh/components/debug-app.mdx +1 -1
  162. package/docs/zh/components/enable-bff-caution.mdx +1 -1
  163. package/docs/zh/components/enable-bff.mdx +37 -8
  164. package/docs/zh/components/enable-ssg.mdx +47 -0
  165. package/docs/zh/components/entry-scan-logic.mdx +7 -0
  166. package/docs/zh/components/init-app.mdx +40 -18
  167. package/docs/zh/components/international/install-command.mdx +8 -0
  168. package/docs/zh/components/international/introduce.mdx +2 -0
  169. package/docs/zh/components/international/platform-support.mdx +0 -0
  170. package/docs/zh/components/module-federation.mdx +4 -4
  171. package/docs/zh/components/new-entry-tooltip.mdx +0 -0
  172. package/docs/zh/components/nodeVersion.mdx +3 -7
  173. package/docs/zh/components/prerequisites.mdx +1 -1
  174. package/docs/zh/components/self-route-example.mdx +3 -3
  175. package/docs/zh/components/ua-polyfill.mdx +11 -6
  176. package/docs/zh/components/upgrade-browserslist.mdx +0 -0
  177. package/docs/zh/configure/_meta.json +7 -8
  178. package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
  179. package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
  180. package/docs/zh/configure/app/dev/server.mdx +104 -0
  181. package/docs/zh/configure/app/dev/setup-middlewares.mdx +4 -23
  182. package/docs/zh/configure/app/html/app-icon.mdx +1 -23
  183. package/docs/zh/configure/app/output/inline-scripts.mdx +1 -1
  184. package/docs/zh/configure/app/output/override-browserslist.mdx +3 -3
  185. package/docs/zh/configure/app/output/source-map.mdx +10 -3
  186. package/docs/zh/configure/app/output/ssg.mdx +13 -45
  187. package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
  188. package/docs/zh/configure/app/performance/build-cache.mdx +0 -4
  189. package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
  190. package/docs/zh/configure/app/resolve/alias.mdx +13 -0
  191. package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
  192. package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
  193. package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
  194. package/docs/zh/configure/app/runtime/0-intro.mdx +2 -53
  195. package/docs/zh/configure/app/security/check-syntax.mdx +1 -1
  196. package/docs/zh/configure/app/server/port.mdx +2 -21
  197. package/docs/zh/configure/app/server/rsc.mdx +30 -0
  198. package/docs/zh/configure/app/server/ssr.mdx +21 -11
  199. package/docs/zh/configure/app/source/decorators.mdx +4 -4
  200. package/docs/zh/configure/app/source/entries.mdx +0 -2
  201. package/docs/zh/configure/app/source/main-entry-name.mdx +4 -4
  202. package/docs/zh/configure/app/source/transform-import.mdx +1 -59
  203. package/docs/zh/configure/app/tools/bundler-chain.mdx +6 -6
  204. package/docs/zh/configure/app/tools/css-extract.mdx +1 -1
  205. package/docs/zh/configure/app/tools/dev-server.mdx +14 -248
  206. package/docs/zh/configure/app/tools/html-plugin.mdx +3 -2
  207. package/docs/zh/configure/app/tools/lightningcss-loader.mdx +0 -1
  208. package/docs/zh/configure/app/tools/swc.mdx +1 -43
  209. package/docs/zh/configure/app/usage.mdx +8 -18
  210. package/docs/zh/guides/_meta.json +5 -1
  211. package/docs/zh/guides/advanced-features/_meta.json +6 -1
  212. package/docs/zh/guides/advanced-features/bff/cross-project.mdx +8 -16
  213. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +25 -8
  214. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +1 -1
  215. package/docs/zh/guides/advanced-features/bff/function.mdx +7 -12
  216. package/docs/zh/guides/advanced-features/bff/sdk.mdx +4 -4
  217. package/docs/zh/guides/advanced-features/build-performance.mdx +23 -30
  218. package/docs/zh/guides/advanced-features/compatibility.mdx +44 -0
  219. package/docs/zh/guides/advanced-features/international/_meta.json +11 -0
  220. package/docs/zh/guides/advanced-features/international/advanced.mdx +193 -0
  221. package/docs/zh/guides/advanced-features/international/api.mdx +400 -0
  222. package/docs/zh/guides/advanced-features/international/basic.mdx +416 -0
  223. package/docs/zh/guides/advanced-features/international/best-practices.mdx +135 -0
  224. package/docs/zh/guides/advanced-features/international/configuration.mdx +441 -0
  225. package/docs/zh/guides/advanced-features/international/locale-detection.mdx +304 -0
  226. package/docs/zh/guides/advanced-features/international/quick-start.mdx +149 -0
  227. package/docs/zh/guides/advanced-features/international/resource-loading.mdx +417 -0
  228. package/docs/zh/guides/advanced-features/international/routing.mdx +212 -0
  229. package/docs/zh/guides/advanced-features/international.mdx +36 -0
  230. package/docs/zh/guides/advanced-features/low-level.mdx +21 -16
  231. package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +3 -3
  232. package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +4 -4
  233. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +7 -21
  234. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +1 -8
  235. package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +0 -4
  236. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +63 -35
  237. package/docs/zh/guides/advanced-features/web-server.mdx +79 -300
  238. package/docs/zh/guides/basic-features/_meta.json +6 -1
  239. package/docs/zh/guides/basic-features/css/css-in-js.mdx +40 -5
  240. package/docs/zh/guides/basic-features/css/css-modules.mdx +6 -17
  241. package/docs/zh/guides/basic-features/css/css.mdx +2 -2
  242. package/docs/zh/guides/basic-features/css/tailwindcss.mdx +6 -90
  243. package/docs/zh/guides/basic-features/data/data-cache.mdx +8 -5
  244. package/docs/zh/guides/basic-features/data/data-fetch.mdx +6 -5
  245. package/docs/zh/guides/basic-features/data/data-write.mdx +4 -4
  246. package/docs/zh/guides/basic-features/debug/mock.mdx +4 -1
  247. package/docs/zh/guides/basic-features/debug/proxy.mdx +0 -8
  248. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +6 -6
  249. package/docs/zh/guides/basic-features/deploy.mdx +24 -20
  250. package/docs/zh/guides/basic-features/env-vars.mdx +1 -1
  251. package/docs/zh/guides/basic-features/html.mdx +2 -2
  252. package/docs/zh/guides/basic-features/output-files.mdx +3 -3
  253. package/docs/zh/guides/basic-features/render/_meta.json +1 -1
  254. package/docs/zh/guides/basic-features/render/before-render.mdx +17 -24
  255. package/docs/zh/guides/basic-features/render/overview.mdx +52 -0
  256. package/docs/zh/guides/basic-features/render/rsc.mdx +413 -0
  257. package/docs/zh/guides/basic-features/render/ssg.mdx +27 -69
  258. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +5 -5
  259. package/docs/zh/guides/basic-features/render/ssr.mdx +34 -31
  260. package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +34 -14
  261. package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
  262. package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
  263. package/docs/zh/guides/basic-features/{routes.mdx → routes/routes.mdx} +8 -114
  264. package/docs/zh/guides/basic-features/static-assets/json-files.mdx +21 -3
  265. package/docs/zh/guides/basic-features/static-assets.mdx +2 -2
  266. package/docs/zh/guides/basic-features/testing/cypress.mdx +5 -5
  267. package/docs/zh/guides/basic-features/testing/jest.mdx +12 -12
  268. package/docs/zh/guides/concept/builder.mdx +24 -9
  269. package/docs/zh/guides/concept/entries.mdx +95 -92
  270. package/docs/zh/guides/get-started/glossary.mdx +0 -18
  271. package/docs/zh/guides/get-started/introduction.mdx +1 -5
  272. package/docs/zh/guides/get-started/quick-start.mdx +5 -72
  273. package/docs/zh/guides/get-started/tech-stack.mdx +8 -26
  274. package/docs/zh/guides/get-started/upgrade.mdx +30 -23
  275. package/docs/zh/guides/topic-detail/_meta.json +0 -12
  276. package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -1
  277. package/docs/zh/guides/topic-detail/module-federation/application.mdx +18 -16
  278. package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
  279. package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +4 -4
  280. package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +51 -5
  281. package/docs/zh/guides/topic-detail/module-federation/usage.mdx +11 -32
  282. package/docs/zh/guides/troubleshooting/builder.mdx +3 -84
  283. package/docs/zh/guides/troubleshooting/cli.mdx +6 -30
  284. package/docs/zh/guides/troubleshooting/dependencies.mdx +23 -23
  285. package/docs/zh/guides/upgrade/_meta.json +1 -0
  286. package/docs/zh/guides/upgrade/config.mdx +809 -0
  287. package/docs/zh/guides/upgrade/entry.mdx +463 -0
  288. package/docs/zh/guides/upgrade/other.md +90 -0
  289. package/docs/zh/guides/upgrade/overview.mdx +36 -0
  290. package/docs/zh/guides/upgrade/tailwindcss.mdx +130 -0
  291. package/docs/zh/guides/upgrade/web-server.md +93 -0
  292. package/docs/zh/plugin/cli-plugins/api.mdx +4 -5
  293. package/docs/zh/plugin/cli-plugins/migration.mdx +30 -45
  294. package/docs/zh/plugin/introduction.mdx +36 -24
  295. package/docs/zh/plugin/official/_meta.json +0 -5
  296. package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -1
  297. package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  298. package/docs/zh/plugin/official/cli-plugins.mdx +0 -2
  299. package/docs/zh/plugin/plugin-system.mdx +45 -42
  300. package/docs/zh/plugin/runtime-plugins/api.mdx +58 -56
  301. package/docs/zh/plugin/runtime-plugins/migration.mdx +26 -17
  302. package/docs/zh/tutorials/_meta.json +0 -10
  303. package/docs/zh/tutorials/examples/csr-auth.mdx +1 -1
  304. package/docs/zh/tutorials/foundations/introduction.mdx +8 -25
  305. package/i18n.json +0 -16
  306. package/package.json +12 -12
  307. package/rspress.config.ts +5 -8
  308. package/src/components/ContentCard/index.module.scss +11 -7
  309. package/src/components/ContentCard/index.tsx +1 -1
  310. package/src/components/FeatureLayout/index.module.css +1 -1
  311. package/src/components/Footer/index.tsx +2 -14
  312. package/src/components/Footer/styles.module.scss +5 -5
  313. package/src/components/ListCard/index.tsx +1 -1
  314. package/src/components/RandomMemberList/index.tsx +1 -1
  315. package/src/components/RsbuildLink/index.tsx +1 -1
  316. package/src/components/Sandpack/index.tsx +1 -1
  317. package/src/custom.scss +15 -0
  318. package/src/i18n/enUS.ts +2 -4
  319. package/src/i18n/index.ts +1 -1
  320. package/src/i18n/zhCN.ts +2 -4
  321. package/src/index.ts +2 -1
  322. package/src/pages/index.module.scss +59 -41
  323. package/src/pages/index.tsx +9 -24
  324. package/docs/en/apis/app/hooks/server/index_.mdx +0 -10
  325. package/docs/en/apis/app/hooks/src/index_.mdx +0 -38
  326. package/docs/en/apis/app/hooks/src/stories.mdx +0 -16
  327. package/docs/en/apis/app/runtime/app/define-config.mdx +0 -67
  328. package/docs/en/apis/app/runtime/core/bootstrap.mdx +0 -74
  329. package/docs/en/apis/app/runtime/core/create-app.mdx +0 -49
  330. package/docs/en/apis/app/runtime/core/use-loader.mdx +0 -89
  331. package/docs/en/apis/app/runtime/core/use-module-apps.mdx +0 -140
  332. package/docs/en/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  333. package/docs/en/apis/app/runtime/model/Provider.mdx +0 -36
  334. package/docs/en/apis/app/runtime/model/auto-actions.mdx +0 -122
  335. package/docs/en/apis/app/runtime/model/connect.mdx +0 -146
  336. package/docs/en/apis/app/runtime/model/create-app.mdx +0 -75
  337. package/docs/en/apis/app/runtime/model/create-store.mdx +0 -61
  338. package/docs/en/apis/app/runtime/model/handle-effect.mdx +0 -107
  339. package/docs/en/apis/app/runtime/model/model_.mdx +0 -198
  340. package/docs/en/apis/app/runtime/model/use-local-model.mdx +0 -29
  341. package/docs/en/apis/app/runtime/model/use-model.mdx +0 -89
  342. package/docs/en/apis/app/runtime/model/use-static-model.mdx +0 -51
  343. package/docs/en/apis/app/runtime/model/use-store.mdx +0 -26
  344. package/docs/en/apis/app/runtime/ssr/pre-render.mdx +0 -96
  345. package/docs/en/apis/app/runtime/web-server/hook.mdx +0 -134
  346. package/docs/en/apis/app/runtime/web-server/middleware.mdx +0 -113
  347. package/docs/en/apis/app/runtime/web-server/unstable_middleware.mdx +0 -167
  348. package/docs/en/components/bff-proxy-path-rewrite.mdx +0 -16
  349. package/docs/en/components/bff-proxy-principle.mdx +0 -1
  350. package/docs/en/components/builder.mdx +0 -3
  351. package/docs/en/components/create-bff-api-app.mdx +0 -25
  352. package/docs/en/components/custom-router-micro-frontend.mdx +0 -40
  353. package/docs/en/components/enable-micro-frontend.mdx +0 -30
  354. package/docs/en/components/enableSwc.mdx +0 -17
  355. package/docs/en/components/global-proxy-config.mdx +0 -85
  356. package/docs/en/components/global-proxy.mdx +0 -29
  357. package/docs/en/components/package-manager.mdx +0 -11
  358. package/docs/en/components/reduck-notify.mdx +0 -27
  359. package/docs/en/components/reduck-tip.mdx +0 -8
  360. package/docs/en/configure/app/auto-load-plugin.mdx +0 -66
  361. package/docs/en/configure/app/deploy/microFrontend.mdx +0 -53
  362. package/docs/en/configure/app/dev/port.mdx +0 -25
  363. package/docs/en/configure/app/dev/proxy.mdx +0 -9
  364. package/docs/en/configure/app/experiments/lazy-compilation.mdx +0 -106
  365. package/docs/en/configure/app/html/disable-html-folder.mdx +0 -46
  366. package/docs/en/configure/app/html/favicon-by-entries.mdx +0 -36
  367. package/docs/en/configure/app/html/inject-by-entries.mdx +0 -36
  368. package/docs/en/configure/app/html/meta-by-entries.mdx +0 -48
  369. package/docs/en/configure/app/html/tags-by-entries.mdx +0 -44
  370. package/docs/en/configure/app/html/template-by-entries.mdx +0 -33
  371. package/docs/en/configure/app/html/template-parameters-by-entries.mdx +0 -35
  372. package/docs/en/configure/app/html/title-by-entries.mdx +0 -37
  373. package/docs/en/configure/app/output/css-module-local-ident-name.mdx +0 -21
  374. package/docs/en/configure/app/output/disable-css-extract.mdx +0 -16
  375. package/docs/en/configure/app/output/disable-filename-hash.mdx +0 -16
  376. package/docs/en/configure/app/output/disable-minimize.mdx +0 -14
  377. package/docs/en/configure/app/output/disable-node-polyfill.mdx +0 -22
  378. package/docs/en/configure/app/output/disable-source-map.mdx +0 -31
  379. package/docs/en/configure/app/output/enable-asset-fallback.mdx +0 -36
  380. package/docs/en/configure/app/output/enable-inline-scripts.mdx +0 -22
  381. package/docs/en/configure/app/output/enable-inline-styles.mdx +0 -22
  382. package/docs/en/configure/app/output/enable-latest-decorators.mdx +0 -14
  383. package/docs/en/configure/app/performance/transform-lodash.mdx +0 -52
  384. package/docs/en/configure/app/runtime/master-app.mdx +0 -36
  385. package/docs/en/configure/app/runtime/state.mdx +0 -52
  386. package/docs/en/configure/app/source/disable-entry-dirs.mdx +0 -38
  387. package/docs/en/configure/app/source/enable-custom-entry.mdx +0 -68
  388. package/docs/en/configure/app/source/module-scopes.mdx +0 -72
  389. package/docs/en/configure/app/source/resolve-extension-prefix.mdx +0 -55
  390. package/docs/en/configure/app/source/resolve-main-fields.mdx +0 -46
  391. package/docs/en/configure/app/tools/esbuild.mdx +0 -44
  392. package/docs/en/configure/app/tools/pug.mdx +0 -54
  393. package/docs/en/configure/app/tools/styled-components.mdx +0 -55
  394. package/docs/en/configure/app/tools/tailwindcss.mdx +0 -98
  395. package/docs/en/configure/app/tools/terser.mdx +0 -58
  396. package/docs/en/configure/app/tools/ts-loader.mdx +0 -76
  397. package/docs/en/configure/app/tools/webpack-chain.mdx +0 -249
  398. package/docs/en/configure/app/tools/webpack.mdx +0 -305
  399. package/docs/en/guides/deprecated.md +0 -17
  400. package/docs/en/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -27
  401. package/docs/en/guides/topic-detail/micro-frontend/c02-development.mdx +0 -290
  402. package/docs/en/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -298
  403. package/docs/en/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  404. package/docs/en/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -26
  405. package/docs/en/guides/topic-detail/model/_meta.json +0 -14
  406. package/docs/en/guides/topic-detail/model/auto-actions.mdx +0 -85
  407. package/docs/en/guides/topic-detail/model/computed-state.mdx +0 -148
  408. package/docs/en/guides/topic-detail/model/define-model.mdx +0 -62
  409. package/docs/en/guides/topic-detail/model/faq.mdx +0 -35
  410. package/docs/en/guides/topic-detail/model/manage-effects.mdx +0 -247
  411. package/docs/en/guides/topic-detail/model/model-communicate.mdx +0 -217
  412. package/docs/en/guides/topic-detail/model/performance.mdx +0 -167
  413. package/docs/en/guides/topic-detail/model/quick-start.mdx +0 -117
  414. package/docs/en/guides/topic-detail/model/redux-integration.mdx +0 -20
  415. package/docs/en/guides/topic-detail/model/typescript-best-practice.mdx +0 -68
  416. package/docs/en/guides/topic-detail/model/use-model.mdx +0 -243
  417. package/docs/en/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  418. package/docs/en/plugin/official/cli-plugins/plugin-swc.mdx +0 -363
  419. package/docs/en/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  420. package/docs/en/plugin/official/rsbuild-plugins/_meta.json +0 -1
  421. package/docs/en/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -205
  422. package/docs/en/plugin/official/rsbuild-plugins.mdx +0 -3
  423. package/docs/en/tutorials/first-app/c01-start.mdx +0 -99
  424. package/docs/en/tutorials/first-app/c02-component.mdx +0 -60
  425. package/docs/en/tutorials/first-app/c03-css.mdx +0 -324
  426. package/docs/en/tutorials/first-app/c04-routes.mdx +0 -172
  427. package/docs/en/tutorials/first-app/c05-loader.mdx +0 -87
  428. package/docs/en/tutorials/first-app/c06-model.mdx +0 -278
  429. package/docs/en/tutorials/first-app/c07-container.mdx +0 -281
  430. package/docs/en/tutorials/first-app/c08-entries.mdx +0 -135
  431. package/docs/zh/apis/app/hooks/server/index_.mdx +0 -10
  432. package/docs/zh/apis/app/hooks/src/index_.mdx +0 -39
  433. package/docs/zh/apis/app/hooks/src/stories.mdx +0 -16
  434. package/docs/zh/apis/app/runtime/app/define-config.mdx +0 -67
  435. package/docs/zh/apis/app/runtime/core/bootstrap.mdx +0 -74
  436. package/docs/zh/apis/app/runtime/core/create-app.mdx +0 -35
  437. package/docs/zh/apis/app/runtime/core/use-loader.mdx +0 -89
  438. package/docs/zh/apis/app/runtime/core/use-module-apps.mdx +0 -179
  439. package/docs/zh/apis/app/runtime/core/use-runtime-context.mdx +0 -116
  440. package/docs/zh/apis/app/runtime/model/Provider.mdx +0 -36
  441. package/docs/zh/apis/app/runtime/model/auto-actions.mdx +0 -122
  442. package/docs/zh/apis/app/runtime/model/connect.mdx +0 -143
  443. package/docs/zh/apis/app/runtime/model/create-app.mdx +0 -75
  444. package/docs/zh/apis/app/runtime/model/create-store.mdx +0 -61
  445. package/docs/zh/apis/app/runtime/model/handle-effect.mdx +0 -108
  446. package/docs/zh/apis/app/runtime/model/model_.mdx +0 -201
  447. package/docs/zh/apis/app/runtime/model/use-local-model.mdx +0 -29
  448. package/docs/zh/apis/app/runtime/model/use-model.mdx +0 -89
  449. package/docs/zh/apis/app/runtime/model/use-static-model.mdx +0 -49
  450. package/docs/zh/apis/app/runtime/model/use-store.mdx +0 -26
  451. package/docs/zh/apis/app/runtime/ssr/pre-render.mdx +0 -96
  452. package/docs/zh/apis/app/runtime/web-server/hook.mdx +0 -136
  453. package/docs/zh/apis/app/runtime/web-server/middleware.mdx +0 -114
  454. package/docs/zh/apis/app/runtime/web-server/unstable_middleware.mdx +0 -165
  455. package/docs/zh/components/bff-proxy-path-rewrite.mdx +0 -16
  456. package/docs/zh/components/bff-proxy-principle.mdx +0 -1
  457. package/docs/zh/components/builder.mdx +0 -3
  458. package/docs/zh/components/create-bff-api-app.mdx +0 -25
  459. package/docs/zh/components/custom-router-micro-frontend.mdx +0 -40
  460. package/docs/zh/components/enable-micro-frontend.mdx +0 -30
  461. package/docs/zh/components/enableSwc.mdx +0 -17
  462. package/docs/zh/components/global-proxy-config.mdx +0 -85
  463. package/docs/zh/components/global-proxy.mdx +0 -29
  464. package/docs/zh/components/package-manager.mdx +0 -11
  465. package/docs/zh/components/reduck-notify.mdx +0 -27
  466. package/docs/zh/components/reduck-tip.mdx +0 -8
  467. package/docs/zh/configure/app/auto-load-plugin.mdx +0 -66
  468. package/docs/zh/configure/app/deploy/microFrontend.mdx +0 -55
  469. package/docs/zh/configure/app/dev/port.mdx +0 -25
  470. package/docs/zh/configure/app/dev/proxy.mdx +0 -9
  471. package/docs/zh/configure/app/experiments/lazy-compilation.mdx +0 -105
  472. package/docs/zh/configure/app/html/disable-html-folder.mdx +0 -45
  473. package/docs/zh/configure/app/html/favicon-by-entries.mdx +0 -37
  474. package/docs/zh/configure/app/html/inject-by-entries.mdx +0 -37
  475. package/docs/zh/configure/app/html/meta-by-entries.mdx +0 -48
  476. package/docs/zh/configure/app/html/tags-by-entries.mdx +0 -44
  477. package/docs/zh/configure/app/html/template-by-entries.mdx +0 -33
  478. package/docs/zh/configure/app/html/template-parameters-by-entries.mdx +0 -36
  479. package/docs/zh/configure/app/html/title-by-entries.mdx +0 -37
  480. package/docs/zh/configure/app/output/css-module-local-ident-name.mdx +0 -21
  481. package/docs/zh/configure/app/output/disable-css-extract.mdx +0 -16
  482. package/docs/zh/configure/app/output/disable-filename-hash.mdx +0 -16
  483. package/docs/zh/configure/app/output/disable-minimize.mdx +0 -14
  484. package/docs/zh/configure/app/output/disable-node-polyfill.mdx +0 -22
  485. package/docs/zh/configure/app/output/disable-source-map.mdx +0 -31
  486. package/docs/zh/configure/app/output/enable-asset-fallback.mdx +0 -36
  487. package/docs/zh/configure/app/output/enable-inline-scripts.mdx +0 -22
  488. package/docs/zh/configure/app/output/enable-inline-styles.mdx +0 -22
  489. package/docs/zh/configure/app/output/enable-latest-decorators.mdx +0 -14
  490. package/docs/zh/configure/app/performance/transform-lodash.mdx +0 -52
  491. package/docs/zh/configure/app/runtime/master-app.mdx +0 -38
  492. package/docs/zh/configure/app/runtime/state.mdx +0 -52
  493. package/docs/zh/configure/app/source/disable-entry-dirs.mdx +0 -38
  494. package/docs/zh/configure/app/source/enable-custom-entry.mdx +0 -67
  495. package/docs/zh/configure/app/source/module-scopes.mdx +0 -72
  496. package/docs/zh/configure/app/source/resolve-extension-prefix.mdx +0 -57
  497. package/docs/zh/configure/app/source/resolve-main-fields.mdx +0 -46
  498. package/docs/zh/configure/app/tools/esbuild.mdx +0 -44
  499. package/docs/zh/configure/app/tools/pug.mdx +0 -54
  500. package/docs/zh/configure/app/tools/styled-components.mdx +0 -54
  501. package/docs/zh/configure/app/tools/tailwindcss.mdx +0 -98
  502. package/docs/zh/configure/app/tools/terser.mdx +0 -58
  503. package/docs/zh/configure/app/tools/ts-loader.mdx +0 -76
  504. package/docs/zh/configure/app/tools/webpack-chain.mdx +0 -253
  505. package/docs/zh/configure/app/tools/webpack.mdx +0 -305
  506. package/docs/zh/guides/advanced-features/rspack-start.mdx +0 -154
  507. package/docs/zh/guides/deprecated.md +0 -19
  508. package/docs/zh/guides/topic-detail/micro-frontend/c01-introduction.mdx +0 -26
  509. package/docs/zh/guides/topic-detail/micro-frontend/c02-development.mdx +0 -332
  510. package/docs/zh/guides/topic-detail/micro-frontend/c03-main-app.mdx +0 -296
  511. package/docs/zh/guides/topic-detail/micro-frontend/c04-communicate.mdx +0 -58
  512. package/docs/zh/guides/topic-detail/micro-frontend/c05-mixed-stack.mdx +0 -27
  513. package/docs/zh/guides/topic-detail/model/_meta.json +0 -14
  514. package/docs/zh/guides/topic-detail/model/auto-actions.mdx +0 -88
  515. package/docs/zh/guides/topic-detail/model/computed-state.mdx +0 -147
  516. package/docs/zh/guides/topic-detail/model/define-model.mdx +0 -63
  517. package/docs/zh/guides/topic-detail/model/faq.mdx +0 -36
  518. package/docs/zh/guides/topic-detail/model/manage-effects.mdx +0 -256
  519. package/docs/zh/guides/topic-detail/model/model-communicate.mdx +0 -217
  520. package/docs/zh/guides/topic-detail/model/performance.mdx +0 -167
  521. package/docs/zh/guides/topic-detail/model/quick-start.mdx +0 -117
  522. package/docs/zh/guides/topic-detail/model/redux-integration.mdx +0 -20
  523. package/docs/zh/guides/topic-detail/model/typescript-best-practice.mdx +0 -67
  524. package/docs/zh/guides/topic-detail/model/use-model.mdx +0 -248
  525. package/docs/zh/guides/topic-detail/model/use-out-of-modernjs.mdx +0 -46
  526. package/docs/zh/plugin/official/cli-plugins/plugin-swc.mdx +0 -351
  527. package/docs/zh/plugin/official/cli-plugins/plugin-tailwind.mdx +0 -5
  528. package/docs/zh/plugin/official/rsbuild-plugins/_meta.json +0 -1
  529. package/docs/zh/plugin/official/rsbuild-plugins/plugin-esbuild.mdx +0 -201
  530. package/docs/zh/plugin/official/rsbuild-plugins.mdx +0 -3
  531. package/docs/zh/tutorials/first-app/c01-start.mdx +0 -99
  532. package/docs/zh/tutorials/first-app/c02-component.mdx +0 -60
  533. package/docs/zh/tutorials/first-app/c03-css.mdx +0 -323
  534. package/docs/zh/tutorials/first-app/c04-routes.mdx +0 -172
  535. package/docs/zh/tutorials/first-app/c05-loader.mdx +0 -89
  536. package/docs/zh/tutorials/first-app/c06-model.mdx +0 -274
  537. package/docs/zh/tutorials/first-app/c07-container.mdx +0 -281
  538. package/docs/zh/tutorials/first-app/c08-entries.mdx +0 -135
  539. /package/docs/en/components/{reduck-migration.mdx → auto-upgrade.mdx} +0 -0
  540. /package/docs/{zh/components/reduck-migration.mdx → en/components/international/platform-support.mdx} +0 -0
@@ -70,21 +70,36 @@ export default defineRuntimeConfig({
70
70
  });
71
71
  ```
72
72
 
73
- {/* prettier-ignore */}
74
- {/* #### Server Plugins
73
+ #### Server Plugins
75
74
 
76
75
  Server plugins are used to provide additional functionality when the application receives requests, such as adding middleware and modifying request responses.
77
76
 
78
77
  Server plugins are configured via the `plugins` field in `server/modern.server.ts`.
79
78
 
80
- ````ts title="src/modern.server.ts"
81
- import { defineConfig } from '@modern-js/app-tools/server';
82
- import bffPlugin from '@modern-js/plugin-bff/server';
83
-
84
- export default defineConfig({
85
- plugins: [bffPlugin()],
79
+ ```ts title="server/modern.server.ts"
80
+ import { defineServerConfig } from '@modern-js/server-runtime';
81
+
82
+ export default defineServerConfig({
83
+ plugins: [
84
+ {
85
+ name: 'custom-plugin-in-config',
86
+ setup: api => {
87
+ api.onPrepare(() => {
88
+ const { middlewares } = api.getServerContext();
89
+
90
+ middlewares?.push({
91
+ name: 'server-plugin-middleware',
92
+ handler: async (c, next) => {
93
+ c.res.headers.set('x-render-middleware-plugin', 'ok');
94
+ await next();
95
+ },
96
+ });
97
+ });
98
+ },
99
+ },
100
+ ],
86
101
  });
87
- ``` */}
102
+ ```
88
103
 
89
104
  :::tip
90
105
  Modern.js officially uses the new plugin mechanism starting from `MAJOR_VERSION.66.0`.
@@ -105,7 +120,7 @@ Rsbuild is the underlying build tool for Modern.js. By adding Rsbuild plugins, y
105
120
  - Modifying or compiling files
106
121
  - Deploying artifacts
107
122
 
108
- You can register Rsbuild plugins in `modern.config.ts` via the `builderPlugins` option. See [builderPlugins](/configure/app/builder-plugins.html) for details.
123
+ You can register Rsbuild plugins in `modern.config.ts` via the `builderPlugins` option. See [builderPlugins](/configure/app/builder-plugins.html) for details.
109
124
 
110
125
  :::tip
111
126
  Starting from `MAJOR_VERSION.46.0`, Modern.js upgraded its underlying build tool to [Rsbuild](https://rsbuild.rs/).
@@ -121,23 +136,18 @@ You can read [Rsbuild Official Website - Plugins](https://rsbuild.rs/plugins/lis
121
136
 
122
137
  #### Built-in Plugins
123
138
 
124
- The following are official Rsbuild plugins that are already built into Modern.js. They can be enabled without installation:
125
-
126
- | Plugin | Description | Modern.js Link |
127
- | -------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
128
- | [React Plugin](https://rsbuild.rs/zh/plugins/list/plugin-react) | Provides support for React | - |
129
- | [SVGR Plugin](https://rsbuild.rs/zh/plugins/list/plugin-svgr) | Supports converting SVG images into React components | [output.disableSvgr](/configure/app/output/disable-svgr)<br />[output.svgDefaultExport](/configure/app/output/svg-default-export) |
130
- | [Styled Components Plugin](https://github.com/rspack-contrib/rsbuild-plugin-styled-components) | Provides compile-time support for styled-components | [tools.styledComponents](/configure/app/tools/styled-components.html) |
131
- | [Assets Retry Plugin](https://rsbuild.rs/zh/plugins/list/plugin-assets-retry) | Automatically retries requests when static asset loading fails | [output.assetsRetry](/configure/app/output/assets-retry.html) |
132
- | [Type Check Plugin](https://github.com/rspack-contrib/rsbuild-plugin-type-check) | Runs TypeScript type checking in a separate process | [output.disableTsChecker](/configure/app/output/disable-ts-checker.html)<br />[tools.tsChecker](/configure/app/tools/ts-checker.html) |
133
- | [Node Polyfill Plugin](https://github.com/rspack-contrib/rsbuild-plugin-node-polyfill) | Injects polyfills for Node core modules in the browser | [output.disableNodePolyfill](/configure/app/output/disable-node-polyfill.html) |
134
- | [Source Build Plugin](https://github.com/rspack-contrib/rsbuild-plugin-source-build) | For monorepo scenarios, supports referencing source code from other subdirectories and completing builds and hot updates | [experiments.sourceBuild](/configure/app/experiments/source-build.html) |
135
- | [Check Syntax Plugin](https://github.com/rspack-contrib/rsbuild-plugin-check-syntax) | Analyzes the syntax compatibility of the build artifacts to determine if there are any advanced syntax features that cause compatibility issues | [security.checkSyntax](/configure/app/security/check-syntax.html) |
136
- | [CSS Minimizer Plugin](https://github.com/rspack-contrib/rsbuild-plugin-css-minimizer) | Used to customize the CSS compression tool, switch to [cssnano](https://cssnano.co/) or other tools for CSS compression | [tools.minifyCss](/configure/app/tools/minify-css.html) |
137
- | [Pug Plugin](https://github.com/rspack-contrib/rsbuild-plugin-pug) | Provides support for the Pug template engine | [tools.pug](/configure/app/tools/pug.html) |
138
- | [Rem Plugin](https://github.com/rspack-contrib/rsbuild-plugin-rem) | Implements rem adaptive layout for mobile pages | [output.convertToRem](/configure/app/output/convert-to-rem.html) |
139
- | [YAML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-yaml) | Used to reference YAML files and convert them to JavaScript objects | [YAML Files](/guides/basic-features/static-assets/json-files.html#yaml-files) |
140
- | [TOML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-toml) | Used to reference TOML files and convert them to JavaScript objects | [TOML Files](/guides/basic-features/static-assets/json-files.html#toml-files) |
139
+ The following are official Rsbuild plugins that are already built into Modern.js. They can be enabled without installation:
140
+
141
+ | Plugin | Description | Modern.js Link |
142
+ | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
143
+ | [React Plugin](https://rsbuild.rs/zh/plugins/list/plugin-react) | Provides support for React | - |
144
+ | [SVGR Plugin](https://rsbuild.rs/zh/plugins/list/plugin-svgr) | Supports converting SVG images into React components | [output.disableSvgr](/configure/app/output/disable-svgr)<br />[output.svgDefaultExport](/configure/app/output/svg-default-export) |
145
+ | [Assets Retry Plugin](https://rsbuild.rs/zh/plugins/list/plugin-assets-retry) | Automatically retries requests when static asset loading fails | [output.assetsRetry](/configure/app/output/assets-retry.html) |
146
+ | [Type Check Plugin](https://github.com/rspack-contrib/rsbuild-plugin-type-check) | Runs TypeScript type checking in a separate process | [output.disableTsChecker](/configure/app/output/disable-ts-checker.html)<br />[tools.tsChecker](/configure/app/tools/ts-checker.html) |
147
+ | [Source Build Plugin](https://github.com/rspack-contrib/rsbuild-plugin-source-build) | For monorepo scenarios, supports referencing source code from other subdirectories and completing builds and hot updates | [experiments.sourceBuild](/configure/app/experiments/source-build.html) |
148
+ | [Check Syntax Plugin](https://github.com/rspack-contrib/rsbuild-plugin-check-syntax) | Analyzes the syntax compatibility of the build artifacts to determine if there are any advanced syntax features that cause compatibility issues | [security.checkSyntax](/configure/app/security/check-syntax.html) |
149
+ | [CSS Minimizer Plugin](https://github.com/rspack-contrib/rsbuild-plugin-css-minimizer) | Used to customize the CSS compression tool, switch to [cssnano](https://cssnano.co/) or other tools for CSS compression | [tools.minifyCss](/configure/app/tools/minify-css.html) |
150
+ | [Rem Plugin](https://github.com/rspack-contrib/rsbuild-plugin-rem) | Implements rem adaptive layout for mobile pages | [output.convertToRem](/configure/app/output/convert-to-rem.html) |
141
151
 
142
152
  #### Plugins Not Built-in
143
153
 
@@ -146,6 +156,8 @@ The following are official Rsbuild plugins that are not built into Modern.js:
146
156
  - [Image Compress Plugin](https://github.com/rspack-contrib/rsbuild-plugin-image-compress): Compresses image resources used in the project.
147
157
  - [Stylus Plugin](https://rsbuild.rs/zh/plugins/list/plugin-stylus): Uses Stylus as the CSS preprocessor.
148
158
  - [UMD Plugin](https://github.com/rspack-contrib/rsbuild-plugin-umd): Used to build UMD format artifacts.
159
+ - [YAML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-yaml): Used to reference YAML files and convert them to JavaScript objects.
160
+ - [TOML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-toml): Used to reference TOML files and convert them to JavaScript objects.
149
161
 
150
162
  import OtherPlugins from '@site-docs-en/components/other-plugins.mdx';
151
163
 
@@ -3,10 +3,5 @@
3
3
  "type": "dir",
4
4
  "name": "cli-plugins",
5
5
  "label": "cli-plugins"
6
- },
7
- {
8
- "type": "dir",
9
- "name": "rsbuild-plugins",
10
- "label": "rsbuild-plugins"
11
6
  }
12
7
  ]
@@ -1 +1 @@
1
- ["plugin-tailwind", "plugin-bff", "plugin-ssg", "plugin-swc"]
1
+ ["plugin-bff", "plugin-ssg", "plugin-styled-components"]
@@ -0,0 +1,5 @@
1
+ # styled-components Plugin
2
+
3
+ In a Modern.js application, developers can use the styled-components plugin to utilize the styled-components library within the app, enabling CSS-in-JS functionality.
4
+
5
+ For more details, please refer to [Using CSS-in-JS](/guides/basic-features/css/css-in-js).
@@ -1,6 +1,4 @@
1
1
  # Overview
2
2
 
3
- - [@modern-js/plugin-tailwindcss](/plugin/official/cli-plugins/plugin-tailwind): Enables the use of Tailwind CSS styles.
4
3
  - [@modern-js/plugin-bff](/plugin/official/cli-plugins/plugin-bff): Provides BFF services and unified invocation capabilities.
5
4
  - [@modern-js/plugin-ssg](/plugin/official/cli-plugins/plugin-ssg): Provides static site generation capabilities.
6
- - [@modern-js/plugin-swc](/plugin/official/cli-plugins/plugin-swc): Provides SWC compilation support.
@@ -1,15 +1,15 @@
1
1
  # Plugin System
2
2
 
3
- Modern.js adopts a highly extensible, plugin-based architecture, where its core functionalities and extended capabilities are implemented through plugins. The plugin system not only ensures the framework's flexibility but also provides developers with powerful customization options. This document focuses on how to write Modern.js plugins, helping you quickly get started with plugin development.
3
+ Modern.js adopts a highly extensible, plugin-based architecture, where its core functionalities and extended capabilities are implemented through plugins. The plugin system not only ensures the framework's flexibility but also provides developers with powerful customization options. This document focuses on how to write Modern.js plugins, helping you quickly get started with plugin development.
4
4
 
5
5
  ## Core Concept: Everything is a Plugin
6
6
 
7
7
  Modern.js adheres to the design philosophy of "everything is a plugin," modularizing the framework's various functional components and assembling and extending them through plugins. This design brings several advantages, including:
8
8
 
9
- - **High Cohesion, Low Coupling:** Each functional module is independently developed, tested, and maintained, reducing system complexity.
10
- - **Flexible and Extensible:** Users can easily customize the framework's behavior by writing or combining plugins without modifying the core code.
11
- - **Easy to Reuse:** Plugins can be shared across projects, improving development efficiency.
12
- - **Progressive Enhancement:** Plugins are introduced on demand, without the complexity of carrying all functionalities from the start.
9
+ - **High Cohesion, Low Coupling:** Each functional module is independently developed, tested, and maintained, reducing system complexity.
10
+ - **Flexible and Extensible:** Users can easily customize the framework's behavior by writing or combining plugins without modifying the core code.
11
+ - **Easy to Reuse:** Plugins can be shared across projects, improving development efficiency.
12
+ - **Progressive Enhancement:** Plugins are introduced on demand, without the complexity of carrying all functionalities from the start.
13
13
 
14
14
  ## Plugin Types and Use Cases
15
15
 
@@ -47,15 +47,15 @@ Modern.js provides three main plugin types, corresponding to different stages of
47
47
  A typical Modern.js plugin consists of the following key parts:
48
48
 
49
49
  ```ts
50
- import type { Plugin } from '@modern-js/plugin-v2';
50
+ import type { Plugin } from '@modern-js/plugin';
51
51
 
52
52
  const myPlugin: Plugin = {
53
53
  name: 'my-awesome-plugin', // The unique identifier of the plugin (required)
54
54
 
55
55
  // Plugin dependencies and execution order (optional)
56
- pre: [], // List of plugin names to execute before this plugin, defaults to an empty array
57
- post: [], // List of plugin names to execute after this plugin, defaults to an empty array
58
- required: [],// List of required plugins; if a dependent plugin is not registered, an error will be thrown, defaults to an empty array
56
+ pre: [], // List of plugin names to execute before this plugin, defaults to an empty array
57
+ post: [], // List of plugin names to execute after this plugin, defaults to an empty array
58
+ required: [], // List of required plugins; if a dependent plugin is not registered, an error will be thrown, defaults to an empty array
59
59
  usePlugins: [], // List of plugin instances used internally, defaults to an empty array
60
60
 
61
61
  // Register new Hooks (optional)
@@ -64,8 +64,12 @@ const myPlugin: Plugin = {
64
64
  // The entry function of the plugin (required)
65
65
  setup(api) {
66
66
  // The core logic of the plugin, calling plugin APIs through the api object
67
- api.modifyWebpackConfig(config => { /* ... */ });
68
- api.onPrepare(() => { /* ... */ });
67
+ api.modifyWebpackConfig(config => {
68
+ /* ... */
69
+ });
70
+ api.onPrepare(() => {
71
+ /* ... */
72
+ });
69
73
  // ... Other API calls
70
74
  },
71
75
  };
@@ -77,8 +81,8 @@ export default myPlugin;
77
81
 
78
82
  ##### `name`
79
83
 
80
- - Type: `string`
81
- - Description: Identifies the name of the plugin. This name must be unique within the plugin system; otherwise, the plugin will fail to load.
84
+ - Type: `string`
85
+ - Description: Identifies the name of the plugin. This name must be unique within the plugin system; otherwise, the plugin will fail to load.
82
86
 
83
87
  :::info
84
88
  The plugin names declared in `pre`, `post`, and `required` refer to this `name` field.
@@ -86,28 +90,28 @@ The plugin names declared in `pre`, `post`, and `required` refer to this `name`
86
90
 
87
91
  ##### `setup`
88
92
 
89
- - Type: `(api: PluginAPI) => MaybePromise<void>`
90
- - Description: The main entry point for the plugin's logic.
93
+ - Type: `(api: PluginAPI) => MaybePromise<void>`
94
+ - Description: The main entry point for the plugin's logic.
91
95
 
92
96
  ###### `api`
93
97
 
94
- - Type: `PluginAPI`
95
- - Description: The plugin's API, containing the Hooks and utility functions supported by the plugin.
98
+ - Type: `PluginAPI`
99
+ - Description: The plugin's API, containing the Hooks and utility functions supported by the plugin.
96
100
 
97
101
  ##### `pre`
98
102
 
99
- - Type: `string[]`
100
- - Description: Used to insert the plugin execution order. Plugins declared in `pre` will be executed before this plugin.
103
+ - Type: `string[]`
104
+ - Description: Used to insert the plugin execution order. Plugins declared in `pre` will be executed before this plugin.
101
105
 
102
106
  ##### `post`
103
107
 
104
- - Type: `string[]`
105
- - Description: Used to determine the plugin execution order. Plugins declared in `post` will be executed after this plugin.
108
+ - Type: `string[]`
109
+ - Description: Used to determine the plugin execution order. Plugins declared in `post` will be executed after this plugin.
106
110
 
107
111
  ##### `required`
108
112
 
109
- - Type: `string[]`
110
- - Description: Other plugins that this plugin depends on. Before running, it will check if the dependent plugins are registered.
113
+ - Type: `string[]`
114
+ - Description: Other plugins that this plugin depends on. Before running, it will check if the dependent plugins are registered.
111
115
 
112
116
  :::info
113
117
  If unregistered plugin names are configured in `pre` or `post`, these plugin names will be **automatically ignored** and will not affect the execution of other plugins.
@@ -123,6 +127,7 @@ If you need to explicitly declare that the plugins that the current plugin depen
123
127
  :::info
124
128
  Plugins declared in `usePlugins` are executed before the current plugin by default. To execute them after, use the `post` declaration.
125
129
  :::
130
+
126
131
  ##### `registryHooks`
127
132
 
128
133
  - Type: `Record<string, PluginHook<(...args: any[]) => any>>`
@@ -134,104 +139,106 @@ The core of the Modern.js plugin system is its Hook model, which defines the com
134
139
 
135
140
  ### Async Hook
136
141
 
137
- - **Characteristics:**
138
- - Hook functions are executed asynchronously, supporting `async/await`.
139
- - The return value of the previous Hook function is passed as the first argument to the next Hook function.
140
- - Finally returns the return value of the last Hook function.
141
- - **Use Cases:** Scenarios involving asynchronous operations (such as network requests, file reading/writing, etc.).
142
- - **Creation Method:** Created using `createAsyncHook`.
142
+ - **Characteristics:**
143
+ - Hook functions are executed asynchronously, supporting `async/await`.
144
+ - The return value of the previous Hook function is passed as the first argument to the next Hook function.
145
+ - Finally returns the return value of the last Hook function.
146
+ - **Use Cases:** Scenarios involving asynchronous operations (such as network requests, file reading/writing, etc.).
147
+ - **Creation Method:** Created using `createAsyncHook`.
143
148
 
144
149
  Example:
145
150
 
146
151
  ```ts
147
152
  // Define Hooks
148
- import { createAsyncHook } from '@modern-js/plugin-v2';
153
+ import { createAsyncHook } from '@modern-js/plugin';
149
154
 
150
155
  export type AfterPrepareFn = () => Promise<void> | void;
151
156
  export const onAfterPrepare = createAsyncHook<AfterPrepareFn>();
152
157
 
153
158
  // Register Hooks in the plugin
154
159
  const myPlugin = () => ({
155
- name: "my-plugin",
160
+ name: 'my-plugin',
156
161
  registryHooks: {
157
162
  onAfterPrepare,
158
163
  },
159
- setup: (api) => {
164
+ setup: api => {
160
165
  api.onPrepare(async () => {
161
166
  // Use the registered Hooks in the plugin
162
167
  const hooks = api.getHooks();
163
168
  await hooks.onAfterPrepare.call();
164
169
  });
165
- }
170
+ },
166
171
  });
167
172
 
168
173
  // Use Hook in other plugins
169
174
  const myPlugin2 = () => ({
170
- name: "my-plugin-2",
171
- setup: (api) => {
175
+ name: 'my-plugin-2',
176
+ setup: api => {
172
177
  api.onAfterPrepare(async () => {
173
178
  // TODO
174
179
  });
175
- }
176
- })
180
+ },
181
+ });
177
182
  ```
178
183
 
179
184
  ### Sync Hook (Synchronous Hook)
180
185
 
181
- - **Characteristics:**
182
- - Hook functions are executed synchronously.
183
- - The return value of the previous Hook function is passed as the first argument to the next Hook function.
184
- - Finally returns the return value of the last Hook function.
185
- - **Use Cases:** Scenarios where data needs to be modified synchronously (such as modifying configurations, routes, etc.).
186
- - **Creation Method:** Created using `createSyncHook`.
186
+ - **Characteristics:**
187
+ - Hook functions are executed synchronously.
188
+ - The return value of the previous Hook function is passed as the first argument to the next Hook function.
189
+ - Finally returns the return value of the last Hook function.
190
+ - **Use Cases:** Scenarios where data needs to be modified synchronously (such as modifying configurations, routes, etc.).
191
+ - **Creation Method:** Created using `createSyncHook`.
187
192
 
188
193
  Example:
189
194
 
190
195
  ```ts
191
196
  // Define Hooks
192
- import { createSyncHook } from '@modern-js/plugin-v2';
197
+ import { createSyncHook } from '@modern-js/plugin';
193
198
 
194
- type RouteObject = {/** TODO **/};
199
+ type RouteObject = {
200
+ /** TODO **/
201
+ };
195
202
  const modifyRoutes = createSyncHook<(routes: RouteObject[]) => RouteObject[]>();
196
203
 
197
204
  // Register Hooks in the plugin
198
205
  const myPlugin = () => ({
199
- name: "my-plugin",
206
+ name: 'my-plugin',
200
207
  registryHooks: {
201
208
  modifyRoutes,
202
209
  },
203
- setup: (api) => {
210
+ setup: api => {
204
211
  api.onPrepare(async () => {
205
212
  const routes = {};
206
213
  // Use registered Hooks in the plugin
207
214
  const hooks = api.getHooks();
208
215
  const routesResult = hooks.modifyRoutes.call(routes);
209
216
  });
210
- }
217
+ },
211
218
  });
212
219
 
213
220
  // Other plugins use Hooks
214
221
  const myPlugin2 = () => ({
215
- name: "my-plugin",
216
- setup: (api) => {
217
- api.modifyRoutes(async (routes) => {
222
+ name: 'my-plugin',
223
+ setup: api => {
224
+ api.modifyRoutes(async routes => {
218
225
  // Modify routes
219
226
  return routes;
220
227
  });
221
- }
228
+ },
222
229
  });
223
230
  ```
224
231
 
225
232
  ## Plugin Development Best Practices
226
233
 
227
- - **Single Responsibility:** Each plugin should focus on implementing a specific, cohesive function. Avoid creating plugins with complex functionalities and unclear responsibilities.
228
- - **Naming Conventions:** Plugin names should be clear, concise, and follow certain naming conventions (such as `plugin-xxx` or `@scope/plugin-xxx`).
229
- - **Type Safety:** Make full use of TypeScript's type system to ensure the type safety of the plugin API and reduce runtime errors.
230
- - **Comprehensive Documentation:** Write clear documentation for the plugin, including API descriptions, usage examples, configuration explanations, and change logs.
231
- - **Thorough Testing:** Conduct unit tests and integration tests on the plugin to ensure its stability, reliability, and compatibility in various scenarios.
232
- - **Minimize Side Effects:** Plugins should minimize modifications to the external environment (such as global variables, file systems, etc.) to maintain the plugin's independence and portability.
233
- - **Error Handling:** Plugins should properly handle potential errors to prevent the entire application from crashing due to plugin exceptions.
234
- - **Performance Optimization:** Pay attention to the performance impact of the plugin, avoid unnecessary calculations and resource consumption, especially in loops or frequently called Hooks.
235
- - **Version Control:** Follow Semantic Versioning (SemVer) to ensure the backward compatibility of the plugin and facilitate user upgrades.
234
+ - **Single Responsibility:** Each plugin should focus on implementing a specific, cohesive function. Avoid creating plugins with complex functionalities and unclear responsibilities.
235
+ - **Naming Conventions:** Plugin names should be clear, concise, and follow certain naming conventions (such as `plugin-xxx` or `@scope/plugin-xxx`).
236
+ - **Type Safety:** Make full use of TypeScript's type system to ensure the type safety of the plugin API and reduce runtime errors.
237
+ - **Comprehensive Documentation:** Write clear documentation for the plugin, including API descriptions, usage examples, configuration explanations, and change logs.
238
+ - **Thorough Testing:** Conduct unit tests and integration tests on the plugin to ensure its stability, reliability, and compatibility in various scenarios.
239
+ - **Minimize Side Effects:** Plugins should minimize modifications to the external environment (such as global variables, file systems, etc.) to maintain the plugin's independence and portability.
240
+ - **Error Handling:** Plugins should properly handle potential errors to prevent the entire application from crashing due to plugin exceptions.
241
+ - **Performance Optimization:** Pay attention to the performance impact of the plugin, avoid unnecessary calculations and resource consumption, especially in loops or frequently called Hooks.
242
+ - **Version Control:** Follow Semantic Versioning (SemVer) to ensure the backward compatibility of the plugin and facilitate user upgrades.
236
243
 
237
244
  Following these best practices can help you develop high-quality, easy-to-maintain, and easy-to-use Modern.js plugins.
@@ -1,6 +1,6 @@
1
1
  # Plugin API
2
2
 
3
- Modern.js's Runtime Plugins allow you to extend and modify the behavior of your application during its React code execution. With Runtime Plugins, you can easily perform initialization tasks, implement React Higher-Order Component (HOC) wrapping, and more.
3
+ Modern.js's Runtime Plugins allow you to extend and modify the behavior of your application during its React code execution. With Runtime Plugins, you can easily perform initialization tasks, implement React Higher-Order Component (HOC) wrapping, and more.
4
4
 
5
5
  :::info
6
6
 
@@ -13,18 +13,18 @@ Runtime plugins need to be configured via the [`plugins`](/configure/app/runtime
13
13
  A typical Runtime Plugin looks like this:
14
14
 
15
15
  ```ts
16
- import type { RuntimePluginFuture } from '@modern-js/runtime';
16
+ import type { RuntimePlugin } from '@modern-js/runtime';
17
17
 
18
- const myRuntimePlugin = (): RuntimePluginFuture => ({
18
+ const myRuntimePlugin = (): RuntimePlugin => ({
19
19
  name: 'my-runtime-plugin',
20
- setup: (api) => {
20
+ setup: api => {
21
21
  // Use the api to register hooks
22
- api.onBeforeRender((context) => {
22
+ api.onBeforeRender(context => {
23
23
  console.log('Before rendering:', context);
24
24
  });
25
25
 
26
- api.wrapRoot((App) => {
27
- return (props) => (
26
+ api.wrapRoot(App => {
27
+ return props => (
28
28
  <MyContextProvider>
29
29
  <App {...props} />
30
30
  </MyContextProvider>
@@ -34,18 +34,17 @@ const myRuntimePlugin = (): RuntimePluginFuture => ({
34
34
  });
35
35
 
36
36
  export default myRuntimePlugin;
37
-
38
37
  ```
39
38
 
40
- - `name`: A unique identifier for the plugin.
41
- - `setup`: The main logic of the plugin, which receives an `api` object as a parameter. This `api` object is used to register hooks.
39
+ - `name`: A unique identifier for the plugin.
40
+ - `setup`: The main logic of the plugin, which receives an `api` object as a parameter. This `api` object is used to register hooks.
42
41
 
43
42
  ## API Overview
44
43
 
45
44
  The Runtime Plugin API is primarily divided into the following categories:
46
45
 
47
- - **Information Retrieval**: Getting runtime configuration and hook functions.
48
- - **Lifecycle Hooks**: Executing custom logic at different stages of the application's rendering process.
46
+ - **Information Retrieval**: Getting runtime configuration and hook functions.
47
+ - **Lifecycle Hooks**: Executing custom logic at different stages of the application's rendering process.
49
48
 
50
49
  ### Information Retrieval
51
50
 
@@ -53,7 +52,7 @@ The Runtime Plugin API is primarily divided into the following categories:
53
52
 
54
53
  Gets the runtime configuration defined by the user in the `modern.runtime.ts` file.
55
54
 
56
- - **Usage**:
55
+ - **Usage**:
57
56
 
58
57
  ```ts
59
58
  const config = api.getRuntimeConfig();
@@ -62,23 +61,25 @@ console.log(config.myCustomSetting);
62
61
 
63
62
  :::warning
64
63
 
65
- This method returns a *copy* of the user's configuration. Modifying the returned value will not affect the original configuration.
64
+ This method returns a _copy_ of the user's configuration. Modifying the returned value will not affect the original configuration.
66
65
  :::
67
66
 
68
67
  #### `api.getHooks`
69
68
 
70
69
  Gets the hook functions that can be triggered manually.
71
70
 
72
- - **Type:**
71
+ - **Type:**
73
72
 
74
73
  ```ts
75
74
  () => {
76
- onBeforeRender: { call: (context: any) => Promise<void> };
75
+ onBeforeRender: {
76
+ call: (context: any) => Promise<void>;
77
+ }
77
78
  // Other hooks...
78
79
  };
79
80
  ```
80
81
 
81
- - **Usage:**
82
+ - **Usage:**
82
83
 
83
84
  ```ts
84
85
  const hooks = api.getHooks();
@@ -89,63 +90,65 @@ await hooks.onBeforeRender.call(myContext);
89
90
 
90
91
  #### `api.onBeforeRender`
91
92
 
92
- Executes before the application renders (including both server-side rendering and client-side rendering). You can use this hook to perform data prefetching, modify the rendering context, etc.
93
+ Executes before the application renders (including both server-side rendering and client-side rendering). You can use this hook to perform data prefetching, modify the rendering context, etc.
93
94
 
94
- - **Type:**
95
+ - **Type:**
95
96
 
96
- ```ts
97
- type OnBeforeRenderFn<RuntimeContext> = (context: RuntimeContext) => Promise<void> | void;
98
- ```
99
- `RuntimeContext` contains contextual information about the current request, such as the request object, response object, etc.
97
+ ```ts
98
+ type OnBeforeRenderFn<RuntimeContext> = (
99
+ context: RuntimeContext,
100
+ ) => Promise<void> | void;
101
+ ```
100
102
 
101
- - **Usage:**
103
+ `RuntimeContext` contains contextual information about the current request, such as the request object, response object, etc.
102
104
 
103
- ```ts
104
- api.onBeforeRender(async (context) => {
105
- const data = await fetchData(context.req);
106
- context.data = data; // Add the data to the context
107
- });
108
- ```
105
+ - **Usage:**
106
+
107
+ ```ts
108
+ api.onBeforeRender(async context => {
109
+ const data = await fetchData(context.req);
110
+ context.data = data; // Add the data to the context
111
+ });
112
+ ```
109
113
 
110
114
  :::warning
111
115
 
112
- - This hook executes before *every* render, so avoid performing long-running operations.
116
+ - This hook executes before **every** render, so avoid performing long-running operations.
113
117
  - You can modify the `context` object in this hook, and the modified `context` will be passed to subsequent rendering processes.
114
118
 
115
119
  :::
116
120
 
117
121
  #### `api.wrapRoot`
118
122
 
119
- Allows you to wrap the application's root component with a custom React component. This is commonly used to add global Providers, layout components, etc.
123
+ Allows you to wrap the application's root component with a custom React component. This is commonly used to add global Providers, layout components, etc.
120
124
 
121
- - **Type:**
125
+ - **Type:**
122
126
 
123
- ```ts
124
- type WrapRootFn = (
125
- App: React.ComponentType<any>
126
- ) => React.ComponentType<any>;
127
- ```
127
+ ```ts
128
+ type WrapRootFn = (App: React.ComponentType<any>) => React.ComponentType<any>;
129
+ ```
128
130
 
129
- - **Usage:**
131
+ - **Usage:**
130
132
 
131
- ```ts
132
- api.wrapRoot((App) => {
133
- const AppWrapper = (props) => {
134
- return (
135
- <MyGlobalProvider>
136
- <Layout>
137
- <App {...props} /> {/* Make sure to pass props */}
138
- </Layout>
139
- </MyGlobalProvider>
140
- );
141
- };
142
- return AppWrapper;
143
- });
144
- ```
145
- :::warning
133
+ ```ts
134
+ api.wrapRoot((App) => {
135
+ const AppWrapper = (props) => {
136
+ return (
137
+ <MyGlobalProvider>
138
+ <Layout>
139
+ <App {...props} /> {/* Make sure to pass props */}
140
+ </Layout>
141
+ </MyGlobalProvider>
142
+ );
143
+ };
144
+ return AppWrapper;
145
+ });
146
+ ```
147
+
148
+ :::warning
146
149
 
147
- - **It is crucial to pass the `props` to the original `App` component**, otherwise, the application may not function correctly.
148
- - The component returned by `wrapRoot` is recreated on every render, so avoid defining complex logic or state within it.
150
+ - **It is crucial to pass the `props` to the original `App` component**, otherwise, the application may not function correctly.
151
+ - The component returned by `wrapRoot` is recreated on every render, so avoid defining complex logic or state within it.
149
152
 
150
153
  :::
151
154
 
@@ -156,12 +159,12 @@ Allows you to wrap the application's root component with a custom React componen
156
159
  You can combine multiple hooks to implement more complex functionality. For example, you can use `onBeforeRender` to fetch data and then use `wrapRoot` to pass the data to the entire application via Context:
157
160
 
158
161
  ```ts
159
- import { RuntimePluginFuture, RuntimeReactContext } from '@modern-js/runtime';
162
+ import { RuntimePlugin, RuntimeContext } from '@modern-js/runtime';
160
163
  import { useContext, createContext } from 'react';
161
164
 
162
165
  export const ThemeContext = createContext<{ theme: string } | null>(null);
163
166
 
164
- export const themePlugin = (): RuntimePluginFuture => {
167
+ export const themePlugin = (): RuntimePlugin => {
165
168
  return {
166
169
  name: 'theme-plugin',
167
170
  setup: api => {
@@ -176,7 +179,7 @@ export const themePlugin = (): RuntimePluginFuture => {
176
179
 
177
180
  api.wrapRoot(App => {
178
181
  return props => {
179
- const context = useContext(RuntimeReactContext);
182
+ const context = useContext(RuntimeContext);
180
183
  return (
181
184
  <ThemeContext.Provider value={context.data}>
182
185
  <App {...props} />