@bleedingdev/modern-js-main-doc 3.2.0-ultramodern.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 (802) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/builder-doc/docs/en/config/performance/rsdoctor.md +37 -0
  4. package/builder-doc/docs/zh/config/performance/rsdoctor.md +37 -0
  5. package/docs/en/_nav.json +36 -0
  6. package/docs/en/apis/_meta.json +13 -0
  7. package/docs/en/apis/app/commands.mdx +215 -0
  8. package/docs/en/apis/app/hooks/_meta.json +28 -0
  9. package/docs/en/apis/app/hooks/api/lambda.mdx +13 -0
  10. package/docs/en/apis/app/hooks/config/_meta.json +1 -0
  11. package/docs/en/apis/app/hooks/config/favicon.mdx +29 -0
  12. package/docs/en/apis/app/hooks/config/html.mdx +9 -0
  13. package/docs/en/apis/app/hooks/config/icon.mdx +29 -0
  14. package/docs/en/apis/app/hooks/config/mock.mdx +7 -0
  15. package/docs/en/apis/app/hooks/config/public.mdx +30 -0
  16. package/docs/en/apis/app/hooks/config/upload.mdx +54 -0
  17. package/docs/en/apis/app/hooks/modern-config.mdx +9 -0
  18. package/docs/en/apis/app/hooks/server/server.mdx +10 -0
  19. package/docs/en/apis/app/hooks/shared.mdx +7 -0
  20. package/docs/en/apis/app/hooks/src/app.mdx +30 -0
  21. package/docs/en/apis/app/hooks/src/entry.mdx +39 -0
  22. package/docs/en/apis/app/hooks/src/entry.server.mdx +56 -0
  23. package/docs/en/apis/app/hooks/src/modern.runtime.mdx +9 -0
  24. package/docs/en/apis/app/hooks/src/routes.mdx +90 -0
  25. package/docs/en/apis/app/hooks/src/server.mdx +7 -0
  26. package/docs/en/apis/app/runtime/_meta.json +32 -0
  27. package/docs/en/apis/app/runtime/bff/use-backend-context.mdx +30 -0
  28. package/docs/en/apis/app/runtime/core/create-root.mdx +22 -0
  29. package/docs/en/apis/app/runtime/core/render.mdx +42 -0
  30. package/docs/en/apis/app/runtime/core/runtime-context.mdx +160 -0
  31. package/docs/en/apis/app/runtime/router/router.mdx +288 -0
  32. package/docs/en/apis/app/runtime/ssr/no-ssr.mdx +38 -0
  33. package/docs/en/apis/app/runtime/ssr/renderStreaming.mdx +71 -0
  34. package/docs/en/apis/app/runtime/ssr/renderString.mdx +64 -0
  35. package/docs/en/apis/app/runtime/ssr/requestHandler.mdx +48 -0
  36. package/docs/en/apis/app/runtime/utility/css-in-js.mdx +44 -0
  37. package/docs/en/apis/app/runtime/utility/head.mdx +38 -0
  38. package/docs/en/apis/app/runtime/utility/loadable.mdx +85 -0
  39. package/docs/en/community/_meta.json +11 -0
  40. package/docs/en/community/blog/2022-0708-updates.md +95 -0
  41. package/docs/en/community/blog/2022-0910-updates.md +80 -0
  42. package/docs/en/community/blog/_meta.json +7 -0
  43. package/docs/en/community/blog/overview.md +67 -0
  44. package/docs/en/community/blog/v2-release-note.mdx +244 -0
  45. package/docs/en/community/blog/v3-release-note.mdx +628 -0
  46. package/docs/en/community/contributing-guide.mdx +257 -0
  47. package/docs/en/community/releases.mdx +31 -0
  48. package/docs/en/community/showcase.mdx +15 -0
  49. package/docs/en/community/team.mdx +29 -0
  50. package/docs/en/components/auto-upgrade.mdx +0 -0
  51. package/docs/en/components/bff-upload.mdx +97 -0
  52. package/docs/en/components/build-output.mdx +45 -0
  53. package/docs/en/components/bundler.mdx +3 -0
  54. package/docs/en/components/convention-routing-motivation.mdx +0 -0
  55. package/docs/en/components/debug-app.mdx +15 -0
  56. package/docs/en/components/default-browserslist.mdx +7 -0
  57. package/docs/en/components/deploy-command.mdx +14 -0
  58. package/docs/en/components/deploy.mdx +1 -0
  59. package/docs/en/components/enable-bff-caution.mdx +3 -0
  60. package/docs/en/components/enable-bff.mdx +56 -0
  61. package/docs/en/components/enable-ssg.mdx +49 -0
  62. package/docs/en/components/entry-mode.mdx +0 -0
  63. package/docs/en/components/entry-scan-logic.mdx +7 -0
  64. package/docs/en/components/extend-bff-function.mdx +3 -0
  65. package/docs/en/components/hono.mdx +120 -0
  66. package/docs/en/components/init-app.mdx +111 -0
  67. package/docs/en/components/init-rspack-app.mdx +5 -0
  68. package/docs/en/components/internal-logger.mdx +25 -0
  69. package/docs/en/components/internal-metrics.mdx +20 -0
  70. package/docs/en/components/international/custom-instance-code.mdx +16 -0
  71. package/docs/en/components/international/init-options-desc.mdx +1 -0
  72. package/docs/en/components/international/install-command.mdx +10 -0
  73. package/docs/en/components/international/instance-code.mdx +16 -0
  74. package/docs/en/components/international/introduce.mdx +5 -0
  75. package/docs/en/components/international/platform-support.mdx +0 -0
  76. package/docs/en/components/language-config.mdx +9 -0
  77. package/docs/en/components/micro-frontend.mdx +6 -0
  78. package/docs/en/components/micro-master-manifest-config.mdx +15 -0
  79. package/docs/en/components/micro-runtime-config.mdx +17 -0
  80. package/docs/en/components/module-federation.mdx +7 -0
  81. package/docs/en/components/new-entry-tooltip.mdx +0 -0
  82. package/docs/en/components/nodeVersion.mdx +28 -0
  83. package/docs/en/components/other-plugins.mdx +0 -0
  84. package/docs/en/components/output-asset-prefix-extend.mdx +0 -0
  85. package/docs/en/components/output-distpath-warning.mdx +0 -0
  86. package/docs/en/components/output-polyfill-extend.mdx +1 -0
  87. package/docs/en/components/prerequisites.mdx +18 -0
  88. package/docs/en/components/release-note.mdx +1 -0
  89. package/docs/en/components/routes-practice.mdx +0 -0
  90. package/docs/en/components/rsbuild-config-tooltip.mdx +5 -0
  91. package/docs/en/components/rsbuild.mdx +3 -0
  92. package/docs/en/components/rsc-deploy-tip.mdx +1 -0
  93. package/docs/en/components/rspack.mdx +3 -0
  94. package/docs/en/components/rspackTip.mdx +7 -0
  95. package/docs/en/components/runtime-cli-config.mdx +0 -0
  96. package/docs/en/components/serve-command.mdx +22 -0
  97. package/docs/en/components/ssr-monitor.mdx +3 -0
  98. package/docs/en/components/stream-ssr-performance.mdx +0 -0
  99. package/docs/en/components/swc.mdx +3 -0
  100. package/docs/en/components/tech-stack-node-framework.mdx +1 -0
  101. package/docs/en/components/turtorials-example-list.mdx +2 -0
  102. package/docs/en/components/ua-polyfill.mdx +44 -0
  103. package/docs/en/components/upgrade-browserslist.mdx +0 -0
  104. package/docs/en/components/upgrade-config-deploy.mdx +0 -0
  105. package/docs/en/components/upgrade-faq.mdx +0 -0
  106. package/docs/en/configure/_meta.json +78 -0
  107. package/docs/en/configure/app/bff/cross-project.mdx +24 -0
  108. package/docs/en/configure/app/bff/effect.mdx +152 -0
  109. package/docs/en/configure/app/bff/prefix.mdx +33 -0
  110. package/docs/en/configure/app/bff/runtime-framework.mdx +28 -0
  111. package/docs/en/configure/app/builder-plugins.mdx +70 -0
  112. package/docs/en/configure/app/dev/asset-prefix.mdx +18 -0
  113. package/docs/en/configure/app/dev/before-start-url.mdx +21 -0
  114. package/docs/en/configure/app/dev/client.mdx +45 -0
  115. package/docs/en/configure/app/dev/hmr.mdx +14 -0
  116. package/docs/en/configure/app/dev/host.mdx +22 -0
  117. package/docs/en/configure/app/dev/https.mdx +81 -0
  118. package/docs/en/configure/app/dev/lazy-compilation.mdx +45 -0
  119. package/docs/en/configure/app/dev/live-reload.mdx +14 -0
  120. package/docs/en/configure/app/dev/progress-bar.mdx +23 -0
  121. package/docs/en/configure/app/dev/server.mdx +128 -0
  122. package/docs/en/configure/app/dev/setup-middlewares.mdx +36 -0
  123. package/docs/en/configure/app/dev/start-url.mdx +53 -0
  124. package/docs/en/configure/app/dev/watch-files.mdx +31 -0
  125. package/docs/en/configure/app/dev/write-to-disk.mdx +14 -0
  126. package/docs/en/configure/app/experiments/source-build.mdx +33 -0
  127. package/docs/en/configure/app/html/app-icon.mdx +32 -0
  128. package/docs/en/configure/app/html/crossorigin.mdx +14 -0
  129. package/docs/en/configure/app/html/favicon.mdx +20 -0
  130. package/docs/en/configure/app/html/inject.mdx +14 -0
  131. package/docs/en/configure/app/html/meta.mdx +28 -0
  132. package/docs/en/configure/app/html/mount-id.mdx +14 -0
  133. package/docs/en/configure/app/html/output-structure.mdx +14 -0
  134. package/docs/en/configure/app/html/script-loading.mdx +14 -0
  135. package/docs/en/configure/app/html/tags.mdx +19 -0
  136. package/docs/en/configure/app/html/template-parameters.mdx +37 -0
  137. package/docs/en/configure/app/html/template.mdx +14 -0
  138. package/docs/en/configure/app/html/title.mdx +22 -0
  139. package/docs/en/configure/app/output/asset-prefix.mdx +18 -0
  140. package/docs/en/configure/app/output/assets-retry.mdx +81 -0
  141. package/docs/en/configure/app/output/charset.mdx +14 -0
  142. package/docs/en/configure/app/output/clean-dist-path.mdx +20 -0
  143. package/docs/en/configure/app/output/convert-to-rem.mdx +83 -0
  144. package/docs/en/configure/app/output/copy.mdx +14 -0
  145. package/docs/en/configure/app/output/css-modules.mdx +52 -0
  146. package/docs/en/configure/app/output/data-uri-limit.mdx +30 -0
  147. package/docs/en/configure/app/output/disable-css-module-extension.mdx +59 -0
  148. package/docs/en/configure/app/output/disable-inline-runtime-chunk.mdx +45 -0
  149. package/docs/en/configure/app/output/disable-svgr.mdx +20 -0
  150. package/docs/en/configure/app/output/disable-ts-checker.mdx +53 -0
  151. package/docs/en/configure/app/output/dist-path.mdx +51 -0
  152. package/docs/en/configure/app/output/enable-asset-manifest.mdx +40 -0
  153. package/docs/en/configure/app/output/enable-css-module-tsdeclaration.mdx +32 -0
  154. package/docs/en/configure/app/output/enable-inline-route-manifests.mdx +20 -0
  155. package/docs/en/configure/app/output/externals.mdx +24 -0
  156. package/docs/en/configure/app/output/filename-hash.mdx +14 -0
  157. package/docs/en/configure/app/output/filename.mdx +59 -0
  158. package/docs/en/configure/app/output/inject-styles.mdx +14 -0
  159. package/docs/en/configure/app/output/inline-scripts.mdx +33 -0
  160. package/docs/en/configure/app/output/inline-styles.mdx +33 -0
  161. package/docs/en/configure/app/output/legal-comments.mdx +22 -0
  162. package/docs/en/configure/app/output/minify.mdx +26 -0
  163. package/docs/en/configure/app/output/override-browserslist.mdx +26 -0
  164. package/docs/en/configure/app/output/polyfill.mdx +18 -0
  165. package/docs/en/configure/app/output/source-map.mdx +34 -0
  166. package/docs/en/configure/app/output/split-route-chunks.mdx +20 -0
  167. package/docs/en/configure/app/output/ssg.mdx +85 -0
  168. package/docs/en/configure/app/output/ssgByEntries.mdx +93 -0
  169. package/docs/en/configure/app/output/svg-default-export.mdx +34 -0
  170. package/docs/en/configure/app/output/temp-dir.mdx +24 -0
  171. package/docs/en/configure/app/performance/build-cache.mdx +43 -0
  172. package/docs/en/configure/app/performance/chunk-split.mdx +44 -0
  173. package/docs/en/configure/app/performance/dns-prefetch.mdx +19 -0
  174. package/docs/en/configure/app/performance/preconnect.mdx +20 -0
  175. package/docs/en/configure/app/performance/prefetch.mdx +25 -0
  176. package/docs/en/configure/app/performance/preload.mdx +27 -0
  177. package/docs/en/configure/app/performance/print-file-size.mdx +44 -0
  178. package/docs/en/configure/app/performance/profile.mdx +14 -0
  179. package/docs/en/configure/app/performance/remove-console.mdx +14 -0
  180. package/docs/en/configure/app/performance/remove-moment-locale.mdx +14 -0
  181. package/docs/en/configure/app/performance/rsdoctor.mdx +39 -0
  182. package/docs/en/configure/app/plugins.mdx +59 -0
  183. package/docs/en/configure/app/resolve/alias-strategy.mdx +14 -0
  184. package/docs/en/configure/app/resolve/alias.mdx +13 -0
  185. package/docs/en/configure/app/resolve/condition-names.mdx +18 -0
  186. package/docs/en/configure/app/resolve/dedupe.mdx +13 -0
  187. package/docs/en/configure/app/resolve/extensions.mdx +18 -0
  188. package/docs/en/configure/app/runtime/0-intro.mdx +61 -0
  189. package/docs/en/configure/app/runtime/plugins.mdx +58 -0
  190. package/docs/en/configure/app/runtime/router.mdx +39 -0
  191. package/docs/en/configure/app/security/check-syntax.mdx +73 -0
  192. package/docs/en/configure/app/security/nonce.mdx +19 -0
  193. package/docs/en/configure/app/security/sri.mdx +24 -0
  194. package/docs/en/configure/app/server/base-url.mdx +30 -0
  195. package/docs/en/configure/app/server/port.mdx +22 -0
  196. package/docs/en/configure/app/server/public-routes.mdx +26 -0
  197. package/docs/en/configure/app/server/routes.mdx +90 -0
  198. package/docs/en/configure/app/server/rsc.mdx +30 -0
  199. package/docs/en/configure/app/server/ssr-by-entries.mdx +29 -0
  200. package/docs/en/configure/app/server/ssr.mdx +85 -0
  201. package/docs/en/configure/app/server/tsconfig-path.mdx +63 -0
  202. package/docs/en/configure/app/source/alias-strategy.mdx +18 -0
  203. package/docs/en/configure/app/source/alias.mdx +27 -0
  204. package/docs/en/configure/app/source/config-dir.mdx +24 -0
  205. package/docs/en/configure/app/source/decorators.mdx +29 -0
  206. package/docs/en/configure/app/source/define.mdx +20 -0
  207. package/docs/en/configure/app/source/disable-default-entries.mdx +32 -0
  208. package/docs/en/configure/app/source/enable-async-entry.mdx +54 -0
  209. package/docs/en/configure/app/source/enable-async-pre-entry.mdx +30 -0
  210. package/docs/en/configure/app/source/entries-dir.mdx +39 -0
  211. package/docs/en/configure/app/source/entries.mdx +183 -0
  212. package/docs/en/configure/app/source/exclude.mdx +14 -0
  213. package/docs/en/configure/app/source/global-vars.mdx +110 -0
  214. package/docs/en/configure/app/source/include.mdx +40 -0
  215. package/docs/en/configure/app/source/main-entry-name.mdx +28 -0
  216. package/docs/en/configure/app/source/pre-entry.mdx +14 -0
  217. package/docs/en/configure/app/source/transform-import.mdx +31 -0
  218. package/docs/en/configure/app/split-chunks.mdx +17 -0
  219. package/docs/en/configure/app/tools/autoprefixer.mdx +48 -0
  220. package/docs/en/configure/app/tools/bundler-chain.mdx +30 -0
  221. package/docs/en/configure/app/tools/css-extract.mdx +37 -0
  222. package/docs/en/configure/app/tools/css-loader.mdx +21 -0
  223. package/docs/en/configure/app/tools/dev-server.mdx +117 -0
  224. package/docs/en/configure/app/tools/html-plugin.mdx +45 -0
  225. package/docs/en/configure/app/tools/less.mdx +85 -0
  226. package/docs/en/configure/app/tools/lightningcss-loader.mdx +39 -0
  227. package/docs/en/configure/app/tools/minify-css.mdx +57 -0
  228. package/docs/en/configure/app/tools/postcss.mdx +38 -0
  229. package/docs/en/configure/app/tools/rspack.mdx +14 -0
  230. package/docs/en/configure/app/tools/sass.mdx +82 -0
  231. package/docs/en/configure/app/tools/style-loader.mdx +14 -0
  232. package/docs/en/configure/app/tools/swc.mdx +69 -0
  233. package/docs/en/configure/app/tools/ts-checker.mdx +56 -0
  234. package/docs/en/configure/app/usage.mdx +276 -0
  235. package/docs/en/guides/_meta.json +37 -0
  236. package/docs/en/guides/advanced-features/_meta.json +32 -0
  237. package/docs/en/guides/advanced-features/bff/_meta.json +10 -0
  238. package/docs/en/guides/advanced-features/bff/cross-project.mdx +110 -0
  239. package/docs/en/guides/advanced-features/bff/data-platform.mdx +118 -0
  240. package/docs/en/guides/advanced-features/bff/extend-server.mdx +120 -0
  241. package/docs/en/guides/advanced-features/bff/frameworks.mdx +118 -0
  242. package/docs/en/guides/advanced-features/bff/function.mdx +261 -0
  243. package/docs/en/guides/advanced-features/bff/operators.mdx +629 -0
  244. package/docs/en/guides/advanced-features/bff/sdk.mdx +116 -0
  245. package/docs/en/guides/advanced-features/bff/upload.mdx +7 -0
  246. package/docs/en/guides/advanced-features/bff.mdx +22 -0
  247. package/docs/en/guides/advanced-features/build-performance.mdx +134 -0
  248. package/docs/en/guides/advanced-features/compatibility.mdx +81 -0
  249. package/docs/en/guides/advanced-features/international/_meta.json +10 -0
  250. package/docs/en/guides/advanced-features/international/advanced.mdx +132 -0
  251. package/docs/en/guides/advanced-features/international/api.mdx +235 -0
  252. package/docs/en/guides/advanced-features/international/best-practices.mdx +290 -0
  253. package/docs/en/guides/advanced-features/international/configuration.mdx +221 -0
  254. package/docs/en/guides/advanced-features/international/locale-detection.mdx +130 -0
  255. package/docs/en/guides/advanced-features/international/quick-start.mdx +112 -0
  256. package/docs/en/guides/advanced-features/international/resource-loading.mdx +158 -0
  257. package/docs/en/guides/advanced-features/international/routing.mdx +134 -0
  258. package/docs/en/guides/advanced-features/international.mdx +29 -0
  259. package/docs/en/guides/advanced-features/low-level.mdx +50 -0
  260. package/docs/en/guides/advanced-features/page-performance/_meta.json +1 -0
  261. package/docs/en/guides/advanced-features/page-performance/code-split.mdx +81 -0
  262. package/docs/en/guides/advanced-features/page-performance/inline-assets.mdx +163 -0
  263. package/docs/en/guides/advanced-features/page-performance/optimize-bundle.mdx +101 -0
  264. package/docs/en/guides/advanced-features/page-performance/react-compiler.mdx +54 -0
  265. package/docs/en/guides/advanced-features/server-monitor/_meta.json +1 -0
  266. package/docs/en/guides/advanced-features/server-monitor/logger.mdx +19 -0
  267. package/docs/en/guides/advanced-features/server-monitor/metrics.mdx +41 -0
  268. package/docs/en/guides/advanced-features/server-monitor/monitors.mdx +242 -0
  269. package/docs/en/guides/advanced-features/source-build.mdx +168 -0
  270. package/docs/en/guides/advanced-features/web-server.mdx +284 -0
  271. package/docs/en/guides/basic-features/_meta.json +49 -0
  272. package/docs/en/guides/basic-features/alias.mdx +106 -0
  273. package/docs/en/guides/basic-features/css/_meta.json +1 -0
  274. package/docs/en/guides/basic-features/css/css-in-js.mdx +69 -0
  275. package/docs/en/guides/basic-features/css/css-modules.mdx +212 -0
  276. package/docs/en/guides/basic-features/css/css.mdx +31 -0
  277. package/docs/en/guides/basic-features/css/tailwindcss.mdx +27 -0
  278. package/docs/en/guides/basic-features/data/_meta.json +1 -0
  279. package/docs/en/guides/basic-features/data/data-cache.mdx +515 -0
  280. package/docs/en/guides/basic-features/data/data-fetch.mdx +419 -0
  281. package/docs/en/guides/basic-features/data/data-write.mdx +230 -0
  282. package/docs/en/guides/basic-features/debug/_meta.json +1 -0
  283. package/docs/en/guides/basic-features/debug/mock.mdx +102 -0
  284. package/docs/en/guides/basic-features/debug/proxy.mdx +25 -0
  285. package/docs/en/guides/basic-features/debug/rsdoctor.mdx +48 -0
  286. package/docs/en/guides/basic-features/debug/using-storybook.mdx +100 -0
  287. package/docs/en/guides/basic-features/deploy.mdx +448 -0
  288. package/docs/en/guides/basic-features/env-vars.mdx +181 -0
  289. package/docs/en/guides/basic-features/html.mdx +259 -0
  290. package/docs/en/guides/basic-features/output-files.mdx +145 -0
  291. package/docs/en/guides/basic-features/render/_meta.json +10 -0
  292. package/docs/en/guides/basic-features/render/before-render.mdx +108 -0
  293. package/docs/en/guides/basic-features/render/overview.mdx +52 -0
  294. package/docs/en/guides/basic-features/render/rsc.mdx +534 -0
  295. package/docs/en/guides/basic-features/render/ssg.mdx +167 -0
  296. package/docs/en/guides/basic-features/render/ssr-cache.mdx +201 -0
  297. package/docs/en/guides/basic-features/render/ssr.mdx +323 -0
  298. package/docs/en/guides/basic-features/render/streaming-ssr.mdx +267 -0
  299. package/docs/en/guides/basic-features/render/tanstack-rsc.mdx +226 -0
  300. package/docs/en/guides/basic-features/routes/_meta.json +1 -0
  301. package/docs/en/guides/basic-features/routes/config-routes.mdx +427 -0
  302. package/docs/en/guides/basic-features/routes/routes.mdx +517 -0
  303. package/docs/en/guides/basic-features/static-assets/_meta.json +1 -0
  304. package/docs/en/guides/basic-features/static-assets/json-files.mdx +124 -0
  305. package/docs/en/guides/basic-features/static-assets/svg-assets.mdx +172 -0
  306. package/docs/en/guides/basic-features/static-assets/wasm-assets.mdx +66 -0
  307. package/docs/en/guides/basic-features/static-assets.mdx +164 -0
  308. package/docs/en/guides/basic-features/testing/_meta.json +1 -0
  309. package/docs/en/guides/basic-features/testing/cypress.mdx +95 -0
  310. package/docs/en/guides/basic-features/testing/jest.mdx +148 -0
  311. package/docs/en/guides/basic-features/testing/playwright.mdx +111 -0
  312. package/docs/en/guides/basic-features/testing/rstest.mdx +163 -0
  313. package/docs/en/guides/basic-features/testing/vitest.mdx +100 -0
  314. package/docs/en/guides/concept/_meta.json +1 -0
  315. package/docs/en/guides/concept/builder.mdx +60 -0
  316. package/docs/en/guides/concept/entries.mdx +325 -0
  317. package/docs/en/guides/concept/server.mdx +35 -0
  318. package/docs/en/guides/get-started/_meta.json +8 -0
  319. package/docs/en/guides/get-started/glossary.mdx +63 -0
  320. package/docs/en/guides/get-started/introduction.mdx +45 -0
  321. package/docs/en/guides/get-started/quick-start.mdx +92 -0
  322. package/docs/en/guides/get-started/tech-stack.mdx +91 -0
  323. package/docs/en/guides/get-started/ultramodern.mdx +98 -0
  324. package/docs/en/guides/get-started/upgrade.mdx +114 -0
  325. package/docs/en/guides/topic-detail/_meta.json +8 -0
  326. package/docs/en/guides/topic-detail/module-federation/_meta.json +1 -0
  327. package/docs/en/guides/topic-detail/module-federation/application.mdx +116 -0
  328. package/docs/en/guides/topic-detail/module-federation/deploy.mdx +104 -0
  329. package/docs/en/guides/topic-detail/module-federation/i18n.mdx +670 -0
  330. package/docs/en/guides/topic-detail/module-federation/introduce.mdx +36 -0
  331. package/docs/en/guides/topic-detail/module-federation/ssr.mdx +170 -0
  332. package/docs/en/guides/topic-detail/module-federation/usage.mdx +202 -0
  333. package/docs/en/guides/troubleshooting/_meta.json +1 -0
  334. package/docs/en/guides/troubleshooting/builder.mdx +114 -0
  335. package/docs/en/guides/troubleshooting/cli.mdx +39 -0
  336. package/docs/en/guides/troubleshooting/dependencies.mdx +123 -0
  337. package/docs/en/guides/troubleshooting/hmr.mdx +148 -0
  338. package/docs/en/guides/upgrade/_meta.json +1 -0
  339. package/docs/en/guides/upgrade/config.mdx +949 -0
  340. package/docs/en/guides/upgrade/entry.mdx +463 -0
  341. package/docs/en/guides/upgrade/other.mdx +183 -0
  342. package/docs/en/guides/upgrade/overview.mdx +33 -0
  343. package/docs/en/guides/upgrade/tailwindcss.mdx +92 -0
  344. package/docs/en/guides/upgrade/web-server.md +109 -0
  345. package/docs/en/index.md +4 -0
  346. package/docs/en/plugin/_meta.json +25 -0
  347. package/docs/en/plugin/cli-plugins/_meta.json +1 -0
  348. package/docs/en/plugin/cli-plugins/api.mdx +573 -0
  349. package/docs/en/plugin/cli-plugins/life-cycle.mdx +135 -0
  350. package/docs/en/plugin/introduction.mdx +153 -0
  351. package/docs/en/plugin/official/_meta.json +7 -0
  352. package/docs/en/plugin/official/cli-plugins/_meta.json +1 -0
  353. package/docs/en/plugin/official/cli-plugins/plugin-bff.mdx +5 -0
  354. package/docs/en/plugin/official/cli-plugins/plugin-ssg.mdx +5 -0
  355. package/docs/en/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  356. package/docs/en/plugin/official/cli-plugins.mdx +4 -0
  357. package/docs/en/plugin/plugin-system.mdx +244 -0
  358. package/docs/en/plugin/runtime-plugins/_meta.json +1 -0
  359. package/docs/en/plugin/runtime-plugins/api.mdx +193 -0
  360. package/docs/en/plugin/runtime-plugins/life-cycle.mdx +29 -0
  361. package/docs/en/plugin/server-plugins/_meta.json +1 -0
  362. package/docs/en/plugin/server-plugins/api.mdx +212 -0
  363. package/docs/en/plugin/server-plugins/life-cycle.mdx +43 -0
  364. package/docs/en/tutorials/_meta.json +7 -0
  365. package/docs/en/tutorials/examples/csr-auth.mdx +31 -0
  366. package/docs/en/tutorials/foundations/introduction.mdx +22 -0
  367. package/docs/zh/_nav.json +36 -0
  368. package/docs/zh/apis/_meta.json +13 -0
  369. package/docs/zh/apis/app/commands.mdx +215 -0
  370. package/docs/zh/apis/app/hooks/_meta.json +28 -0
  371. package/docs/zh/apis/app/hooks/api/lambda.mdx +14 -0
  372. package/docs/zh/apis/app/hooks/config/_meta.json +1 -0
  373. package/docs/zh/apis/app/hooks/config/favicon.mdx +29 -0
  374. package/docs/zh/apis/app/hooks/config/html.mdx +9 -0
  375. package/docs/zh/apis/app/hooks/config/icon.mdx +29 -0
  376. package/docs/zh/apis/app/hooks/config/mock.mdx +7 -0
  377. package/docs/zh/apis/app/hooks/config/public.mdx +30 -0
  378. package/docs/zh/apis/app/hooks/config/upload.mdx +54 -0
  379. package/docs/zh/apis/app/hooks/modern-config.mdx +9 -0
  380. package/docs/zh/apis/app/hooks/server/server.mdx +10 -0
  381. package/docs/zh/apis/app/hooks/shared.mdx +7 -0
  382. package/docs/zh/apis/app/hooks/src/app.mdx +36 -0
  383. package/docs/zh/apis/app/hooks/src/entry.mdx +39 -0
  384. package/docs/zh/apis/app/hooks/src/entry.server.mdx +56 -0
  385. package/docs/zh/apis/app/hooks/src/modern.runtime.mdx +9 -0
  386. package/docs/zh/apis/app/hooks/src/routes.mdx +90 -0
  387. package/docs/zh/apis/app/hooks/src/server.mdx +7 -0
  388. package/docs/zh/apis/app/runtime/_meta.json +32 -0
  389. package/docs/zh/apis/app/runtime/bff/use-backend-context.mdx +31 -0
  390. package/docs/zh/apis/app/runtime/core/create-root.mdx +22 -0
  391. package/docs/zh/apis/app/runtime/core/render.mdx +43 -0
  392. package/docs/zh/apis/app/runtime/core/runtime-context.mdx +160 -0
  393. package/docs/zh/apis/app/runtime/router/router.mdx +287 -0
  394. package/docs/zh/apis/app/runtime/ssr/no-ssr.mdx +38 -0
  395. package/docs/zh/apis/app/runtime/ssr/renderStreaming.mdx +71 -0
  396. package/docs/zh/apis/app/runtime/ssr/renderString.mdx +64 -0
  397. package/docs/zh/apis/app/runtime/ssr/requestHandler.mdx +48 -0
  398. package/docs/zh/apis/app/runtime/utility/css-in-js.mdx +44 -0
  399. package/docs/zh/apis/app/runtime/utility/head.mdx +38 -0
  400. package/docs/zh/apis/app/runtime/utility/loadable.mdx +83 -0
  401. package/docs/zh/community/_meta.json +11 -0
  402. package/docs/zh/community/blog/2022-0708-updates.md +95 -0
  403. package/docs/zh/community/blog/2022-0910-updates.md +80 -0
  404. package/docs/zh/community/blog/_meta.json +7 -0
  405. package/docs/zh/community/blog/overview.md +74 -0
  406. package/docs/zh/community/blog/v2-release-note.mdx +244 -0
  407. package/docs/zh/community/blog/v3-release-note.mdx +628 -0
  408. package/docs/zh/community/contributing-guide.mdx +256 -0
  409. package/docs/zh/community/releases.mdx +31 -0
  410. package/docs/zh/community/showcase.mdx +15 -0
  411. package/docs/zh/community/team.mdx +29 -0
  412. package/docs/zh/components/auto-upgrade.mdx +0 -0
  413. package/docs/zh/components/bff-operator-code.mdx +5 -0
  414. package/docs/zh/components/bff-upload.mdx +98 -0
  415. package/docs/zh/components/build-output.mdx +45 -0
  416. package/docs/zh/components/bundler.mdx +3 -0
  417. package/docs/zh/components/convention-routing-motivation.mdx +0 -0
  418. package/docs/zh/components/debug-app.mdx +16 -0
  419. package/docs/zh/components/default-browserslist.mdx +7 -0
  420. package/docs/zh/components/deploy-command.mdx +14 -0
  421. package/docs/zh/components/deploy.mdx +1 -0
  422. package/docs/zh/components/enable-bff-caution.mdx +4 -0
  423. package/docs/zh/components/enable-bff.mdx +56 -0
  424. package/docs/zh/components/enable-ssg.mdx +49 -0
  425. package/docs/zh/components/entry-mode.mdx +0 -0
  426. package/docs/zh/components/entry-scan-logic.mdx +7 -0
  427. package/docs/zh/components/extend-bff-function.mdx +3 -0
  428. package/docs/zh/components/hono.mdx +120 -0
  429. package/docs/zh/components/init-app.mdx +111 -0
  430. package/docs/zh/components/init-rspack-app.mdx +5 -0
  431. package/docs/zh/components/internal-logger.mdx +25 -0
  432. package/docs/zh/components/internal-metrics.mdx +20 -0
  433. package/docs/zh/components/international/custom-instance-code.mdx +16 -0
  434. package/docs/zh/components/international/init-options-desc.mdx +1 -0
  435. package/docs/zh/components/international/install-command.mdx +11 -0
  436. package/docs/zh/components/international/instance-code.mdx +16 -0
  437. package/docs/zh/components/international/introduce.mdx +5 -0
  438. package/docs/zh/components/international/platform-support.mdx +0 -0
  439. package/docs/zh/components/language-config.mdx +9 -0
  440. package/docs/zh/components/micro-frontend.mdx +6 -0
  441. package/docs/zh/components/micro-master-manifest-config.mdx +15 -0
  442. package/docs/zh/components/micro-runtime-config.mdx +17 -0
  443. package/docs/zh/components/module-federation.mdx +7 -0
  444. package/docs/zh/components/new-entry-tooltip.mdx +0 -0
  445. package/docs/zh/components/nodeVersion.mdx +28 -0
  446. package/docs/zh/components/other-plugins.mdx +0 -0
  447. package/docs/zh/components/output-asset-prefix-extend.mdx +0 -0
  448. package/docs/zh/components/output-distpath-warning.mdx +0 -0
  449. package/docs/zh/components/output-polyfill-extend.mdx +1 -0
  450. package/docs/zh/components/prerequisites.mdx +18 -0
  451. package/docs/zh/components/release-note.mdx +1 -0
  452. package/docs/zh/components/routes-practice.mdx +0 -0
  453. package/docs/zh/components/rsbuild-config-tooltip.mdx +5 -0
  454. package/docs/zh/components/rsbuild.mdx +3 -0
  455. package/docs/zh/components/rsc-deploy-tip.mdx +1 -0
  456. package/docs/zh/components/rspack.mdx +3 -0
  457. package/docs/zh/components/rspackTip.mdx +7 -0
  458. package/docs/zh/components/runtime-cli-config.mdx +0 -0
  459. package/docs/zh/components/self-route-example.mdx +21 -0
  460. package/docs/zh/components/serve-command.mdx +22 -0
  461. package/docs/zh/components/ssr-monitor.mdx +3 -0
  462. package/docs/zh/components/stream-ssr-performance.mdx +0 -0
  463. package/docs/zh/components/swc.mdx +3 -0
  464. package/docs/zh/components/tech-stack-node-framework.mdx +1 -0
  465. package/docs/zh/components/turtorials-example-list.mdx +2 -0
  466. package/docs/zh/components/ua-polyfill.mdx +44 -0
  467. package/docs/zh/components/upgrade-browserslist.mdx +0 -0
  468. package/docs/zh/components/upgrade-config-deploy.mdx +0 -0
  469. package/docs/zh/components/upgrade-faq.mdx +0 -0
  470. package/docs/zh/configure/_meta.json +78 -0
  471. package/docs/zh/configure/app/bff/cross-project.mdx +24 -0
  472. package/docs/zh/configure/app/bff/effect.mdx +152 -0
  473. package/docs/zh/configure/app/bff/prefix.mdx +33 -0
  474. package/docs/zh/configure/app/bff/runtime-framework.mdx +28 -0
  475. package/docs/zh/configure/app/builder-plugins.mdx +72 -0
  476. package/docs/zh/configure/app/dev/asset-prefix.mdx +18 -0
  477. package/docs/zh/configure/app/dev/before-start-url.mdx +21 -0
  478. package/docs/zh/configure/app/dev/client.mdx +45 -0
  479. package/docs/zh/configure/app/dev/hmr.mdx +14 -0
  480. package/docs/zh/configure/app/dev/host.mdx +22 -0
  481. package/docs/zh/configure/app/dev/https.mdx +82 -0
  482. package/docs/zh/configure/app/dev/lazy-compilation.mdx +44 -0
  483. package/docs/zh/configure/app/dev/live-reload.mdx +14 -0
  484. package/docs/zh/configure/app/dev/progress-bar.mdx +23 -0
  485. package/docs/zh/configure/app/dev/server.mdx +128 -0
  486. package/docs/zh/configure/app/dev/setup-middlewares.mdx +36 -0
  487. package/docs/zh/configure/app/dev/start-url.mdx +54 -0
  488. package/docs/zh/configure/app/dev/watch-files.mdx +31 -0
  489. package/docs/zh/configure/app/dev/write-to-disk.mdx +14 -0
  490. package/docs/zh/configure/app/experiments/source-build.mdx +35 -0
  491. package/docs/zh/configure/app/html/app-icon.mdx +32 -0
  492. package/docs/zh/configure/app/html/crossorigin.mdx +15 -0
  493. package/docs/zh/configure/app/html/favicon.mdx +21 -0
  494. package/docs/zh/configure/app/html/inject.mdx +14 -0
  495. package/docs/zh/configure/app/html/meta.mdx +28 -0
  496. package/docs/zh/configure/app/html/mount-id.mdx +14 -0
  497. package/docs/zh/configure/app/html/output-structure.mdx +14 -0
  498. package/docs/zh/configure/app/html/script-loading.mdx +14 -0
  499. package/docs/zh/configure/app/html/tags.mdx +19 -0
  500. package/docs/zh/configure/app/html/template-parameters.mdx +37 -0
  501. package/docs/zh/configure/app/html/template.mdx +14 -0
  502. package/docs/zh/configure/app/html/title.mdx +22 -0
  503. package/docs/zh/configure/app/output/asset-prefix.mdx +18 -0
  504. package/docs/zh/configure/app/output/assets-retry.mdx +81 -0
  505. package/docs/zh/configure/app/output/charset.mdx +14 -0
  506. package/docs/zh/configure/app/output/clean-dist-path.mdx +20 -0
  507. package/docs/zh/configure/app/output/convert-to-rem.mdx +84 -0
  508. package/docs/zh/configure/app/output/copy.mdx +14 -0
  509. package/docs/zh/configure/app/output/css-modules.mdx +52 -0
  510. package/docs/zh/configure/app/output/data-uri-limit.mdx +30 -0
  511. package/docs/zh/configure/app/output/disable-css-module-extension.mdx +59 -0
  512. package/docs/zh/configure/app/output/disable-inline-runtime-chunk.mdx +45 -0
  513. package/docs/zh/configure/app/output/disable-svgr.mdx +21 -0
  514. package/docs/zh/configure/app/output/disable-ts-checker.mdx +53 -0
  515. package/docs/zh/configure/app/output/dist-path.mdx +50 -0
  516. package/docs/zh/configure/app/output/enable-asset-manifest.mdx +40 -0
  517. package/docs/zh/configure/app/output/enable-css-module-tsdeclaration.mdx +32 -0
  518. package/docs/zh/configure/app/output/enable-inline-route-manifests.mdx +21 -0
  519. package/docs/zh/configure/app/output/externals.mdx +24 -0
  520. package/docs/zh/configure/app/output/filename-hash.mdx +14 -0
  521. package/docs/zh/configure/app/output/filename.mdx +62 -0
  522. package/docs/zh/configure/app/output/inject-styles.mdx +14 -0
  523. package/docs/zh/configure/app/output/inline-scripts.mdx +33 -0
  524. package/docs/zh/configure/app/output/inline-styles.mdx +33 -0
  525. package/docs/zh/configure/app/output/legal-comments.mdx +22 -0
  526. package/docs/zh/configure/app/output/minify.mdx +26 -0
  527. package/docs/zh/configure/app/output/override-browserslist.mdx +26 -0
  528. package/docs/zh/configure/app/output/polyfill.mdx +18 -0
  529. package/docs/zh/configure/app/output/source-map.mdx +38 -0
  530. package/docs/zh/configure/app/output/split-route-chunks.mdx +20 -0
  531. package/docs/zh/configure/app/output/ssg.mdx +84 -0
  532. package/docs/zh/configure/app/output/ssgByEntries.mdx +94 -0
  533. package/docs/zh/configure/app/output/svg-default-export.mdx +34 -0
  534. package/docs/zh/configure/app/output/temp-dir.mdx +22 -0
  535. package/docs/zh/configure/app/performance/build-cache.mdx +43 -0
  536. package/docs/zh/configure/app/performance/chunk-split.mdx +44 -0
  537. package/docs/zh/configure/app/performance/dns-prefetch.mdx +19 -0
  538. package/docs/zh/configure/app/performance/preconnect.mdx +20 -0
  539. package/docs/zh/configure/app/performance/prefetch.mdx +25 -0
  540. package/docs/zh/configure/app/performance/preload.mdx +27 -0
  541. package/docs/zh/configure/app/performance/print-file-size.mdx +44 -0
  542. package/docs/zh/configure/app/performance/profile.mdx +14 -0
  543. package/docs/zh/configure/app/performance/remove-console.mdx +14 -0
  544. package/docs/zh/configure/app/performance/remove-moment-locale.mdx +14 -0
  545. package/docs/zh/configure/app/performance/rsdoctor.mdx +39 -0
  546. package/docs/zh/configure/app/plugins.mdx +59 -0
  547. package/docs/zh/configure/app/resolve/alias-strategy.mdx +14 -0
  548. package/docs/zh/configure/app/resolve/alias.mdx +13 -0
  549. package/docs/zh/configure/app/resolve/condition-names.mdx +18 -0
  550. package/docs/zh/configure/app/resolve/dedupe.mdx +14 -0
  551. package/docs/zh/configure/app/resolve/extensions.mdx +18 -0
  552. package/docs/zh/configure/app/runtime/0-intro.mdx +58 -0
  553. package/docs/zh/configure/app/runtime/plugins.mdx +58 -0
  554. package/docs/zh/configure/app/runtime/router.mdx +39 -0
  555. package/docs/zh/configure/app/security/check-syntax.mdx +73 -0
  556. package/docs/zh/configure/app/security/nonce.mdx +19 -0
  557. package/docs/zh/configure/app/security/sri.mdx +24 -0
  558. package/docs/zh/configure/app/server/base-url.mdx +30 -0
  559. package/docs/zh/configure/app/server/port.mdx +23 -0
  560. package/docs/zh/configure/app/server/public-routes.mdx +26 -0
  561. package/docs/zh/configure/app/server/routes.mdx +90 -0
  562. package/docs/zh/configure/app/server/rsc.mdx +30 -0
  563. package/docs/zh/configure/app/server/ssr-by-entries.mdx +29 -0
  564. package/docs/zh/configure/app/server/ssr.mdx +85 -0
  565. package/docs/zh/configure/app/server/tsconfig-path.mdx +63 -0
  566. package/docs/zh/configure/app/source/alias-strategy.mdx +18 -0
  567. package/docs/zh/configure/app/source/alias.mdx +27 -0
  568. package/docs/zh/configure/app/source/config-dir.mdx +24 -0
  569. package/docs/zh/configure/app/source/decorators.mdx +27 -0
  570. package/docs/zh/configure/app/source/define.mdx +20 -0
  571. package/docs/zh/configure/app/source/disable-default-entries.mdx +32 -0
  572. package/docs/zh/configure/app/source/enable-async-entry.mdx +54 -0
  573. package/docs/zh/configure/app/source/enable-async-pre-entry.mdx +77 -0
  574. package/docs/zh/configure/app/source/entries-dir.mdx +39 -0
  575. package/docs/zh/configure/app/source/entries.mdx +185 -0
  576. package/docs/zh/configure/app/source/exclude.mdx +14 -0
  577. package/docs/zh/configure/app/source/global-vars.mdx +109 -0
  578. package/docs/zh/configure/app/source/include.mdx +40 -0
  579. package/docs/zh/configure/app/source/main-entry-name.mdx +28 -0
  580. package/docs/zh/configure/app/source/pre-entry.mdx +14 -0
  581. package/docs/zh/configure/app/source/transform-import.mdx +31 -0
  582. package/docs/zh/configure/app/split-chunks.mdx +17 -0
  583. package/docs/zh/configure/app/tools/autoprefixer.mdx +48 -0
  584. package/docs/zh/configure/app/tools/bundler-chain.mdx +33 -0
  585. package/docs/zh/configure/app/tools/css-extract.mdx +34 -0
  586. package/docs/zh/configure/app/tools/css-loader.mdx +21 -0
  587. package/docs/zh/configure/app/tools/dev-server.mdx +117 -0
  588. package/docs/zh/configure/app/tools/html-plugin.mdx +45 -0
  589. package/docs/zh/configure/app/tools/less.mdx +86 -0
  590. package/docs/zh/configure/app/tools/lightningcss-loader.mdx +39 -0
  591. package/docs/zh/configure/app/tools/minify-css.mdx +57 -0
  592. package/docs/zh/configure/app/tools/postcss.mdx +39 -0
  593. package/docs/zh/configure/app/tools/rspack.mdx +14 -0
  594. package/docs/zh/configure/app/tools/sass.mdx +80 -0
  595. package/docs/zh/configure/app/tools/style-loader.mdx +14 -0
  596. package/docs/zh/configure/app/tools/swc.mdx +69 -0
  597. package/docs/zh/configure/app/tools/ts-checker.mdx +56 -0
  598. package/docs/zh/configure/app/usage.mdx +276 -0
  599. package/docs/zh/guides/_meta.json +37 -0
  600. package/docs/zh/guides/advanced-features/_meta.json +32 -0
  601. package/docs/zh/guides/advanced-features/bff/_meta.json +10 -0
  602. package/docs/zh/guides/advanced-features/bff/cross-project.mdx +112 -0
  603. package/docs/zh/guides/advanced-features/bff/data-platform.mdx +118 -0
  604. package/docs/zh/guides/advanced-features/bff/extend-server.mdx +125 -0
  605. package/docs/zh/guides/advanced-features/bff/frameworks.mdx +118 -0
  606. package/docs/zh/guides/advanced-features/bff/function.mdx +262 -0
  607. package/docs/zh/guides/advanced-features/bff/operators.mdx +629 -0
  608. package/docs/zh/guides/advanced-features/bff/sdk.mdx +117 -0
  609. package/docs/zh/guides/advanced-features/bff/upload.mdx +7 -0
  610. package/docs/zh/guides/advanced-features/bff.mdx +21 -0
  611. package/docs/zh/guides/advanced-features/build-performance.mdx +134 -0
  612. package/docs/zh/guides/advanced-features/compatibility.mdx +80 -0
  613. package/docs/zh/guides/advanced-features/international/_meta.json +10 -0
  614. package/docs/zh/guides/advanced-features/international/advanced.mdx +132 -0
  615. package/docs/zh/guides/advanced-features/international/api.mdx +234 -0
  616. package/docs/zh/guides/advanced-features/international/best-practices.mdx +290 -0
  617. package/docs/zh/guides/advanced-features/international/configuration.mdx +219 -0
  618. package/docs/zh/guides/advanced-features/international/locale-detection.mdx +130 -0
  619. package/docs/zh/guides/advanced-features/international/quick-start.mdx +112 -0
  620. package/docs/zh/guides/advanced-features/international/resource-loading.mdx +155 -0
  621. package/docs/zh/guides/advanced-features/international/routing.mdx +134 -0
  622. package/docs/zh/guides/advanced-features/international.mdx +29 -0
  623. package/docs/zh/guides/advanced-features/low-level.mdx +48 -0
  624. package/docs/zh/guides/advanced-features/page-performance/_meta.json +1 -0
  625. package/docs/zh/guides/advanced-features/page-performance/code-split.mdx +81 -0
  626. package/docs/zh/guides/advanced-features/page-performance/inline-assets.mdx +162 -0
  627. package/docs/zh/guides/advanced-features/page-performance/optimize-bundle.mdx +101 -0
  628. package/docs/zh/guides/advanced-features/page-performance/react-compiler.mdx +54 -0
  629. package/docs/zh/guides/advanced-features/server-monitor/_meta.json +1 -0
  630. package/docs/zh/guides/advanced-features/server-monitor/logger.mdx +21 -0
  631. package/docs/zh/guides/advanced-features/server-monitor/metrics.mdx +42 -0
  632. package/docs/zh/guides/advanced-features/server-monitor/monitors.mdx +240 -0
  633. package/docs/zh/guides/advanced-features/source-build.mdx +168 -0
  634. package/docs/zh/guides/advanced-features/web-server.mdx +281 -0
  635. package/docs/zh/guides/basic-features/_meta.json +49 -0
  636. package/docs/zh/guides/basic-features/alias.mdx +100 -0
  637. package/docs/zh/guides/basic-features/css/_meta.json +1 -0
  638. package/docs/zh/guides/basic-features/css/css-in-js.mdx +69 -0
  639. package/docs/zh/guides/basic-features/css/css-modules.mdx +218 -0
  640. package/docs/zh/guides/basic-features/css/css.mdx +31 -0
  641. package/docs/zh/guides/basic-features/css/tailwindcss.mdx +27 -0
  642. package/docs/zh/guides/basic-features/data/_meta.json +1 -0
  643. package/docs/zh/guides/basic-features/data/data-cache.mdx +498 -0
  644. package/docs/zh/guides/basic-features/data/data-fetch.mdx +421 -0
  645. package/docs/zh/guides/basic-features/data/data-write.mdx +234 -0
  646. package/docs/zh/guides/basic-features/debug/_meta.json +1 -0
  647. package/docs/zh/guides/basic-features/debug/mock.mdx +102 -0
  648. package/docs/zh/guides/basic-features/debug/proxy.mdx +25 -0
  649. package/docs/zh/guides/basic-features/debug/rsdoctor.mdx +48 -0
  650. package/docs/zh/guides/basic-features/debug/using-storybook.mdx +92 -0
  651. package/docs/zh/guides/basic-features/deploy.mdx +432 -0
  652. package/docs/zh/guides/basic-features/env-vars.mdx +180 -0
  653. package/docs/zh/guides/basic-features/html.mdx +262 -0
  654. package/docs/zh/guides/basic-features/output-files.mdx +145 -0
  655. package/docs/zh/guides/basic-features/render/_meta.json +10 -0
  656. package/docs/zh/guides/basic-features/render/before-render.mdx +108 -0
  657. package/docs/zh/guides/basic-features/render/overview.mdx +53 -0
  658. package/docs/zh/guides/basic-features/render/rsc.mdx +619 -0
  659. package/docs/zh/guides/basic-features/render/ssg.mdx +168 -0
  660. package/docs/zh/guides/basic-features/render/ssr-cache.mdx +205 -0
  661. package/docs/zh/guides/basic-features/render/ssr.mdx +334 -0
  662. package/docs/zh/guides/basic-features/render/streaming-ssr.mdx +276 -0
  663. package/docs/zh/guides/basic-features/render/tanstack-rsc.mdx +226 -0
  664. package/docs/zh/guides/basic-features/routes/_meta.json +1 -0
  665. package/docs/zh/guides/basic-features/routes/config-routes.mdx +426 -0
  666. package/docs/zh/guides/basic-features/routes/routes.mdx +521 -0
  667. package/docs/zh/guides/basic-features/static-assets/_meta.json +1 -0
  668. package/docs/zh/guides/basic-features/static-assets/json-files.mdx +124 -0
  669. package/docs/zh/guides/basic-features/static-assets/svg-assets.mdx +174 -0
  670. package/docs/zh/guides/basic-features/static-assets/wasm-assets.mdx +66 -0
  671. package/docs/zh/guides/basic-features/static-assets.mdx +160 -0
  672. package/docs/zh/guides/basic-features/testing/_meta.json +1 -0
  673. package/docs/zh/guides/basic-features/testing/cypress.mdx +95 -0
  674. package/docs/zh/guides/basic-features/testing/jest.mdx +148 -0
  675. package/docs/zh/guides/basic-features/testing/playwright.mdx +112 -0
  676. package/docs/zh/guides/basic-features/testing/rstest.mdx +163 -0
  677. package/docs/zh/guides/basic-features/testing/vitest.mdx +100 -0
  678. package/docs/zh/guides/concept/_meta.json +1 -0
  679. package/docs/zh/guides/concept/builder.mdx +60 -0
  680. package/docs/zh/guides/concept/entries.mdx +323 -0
  681. package/docs/zh/guides/concept/server.mdx +35 -0
  682. package/docs/zh/guides/get-started/_meta.json +8 -0
  683. package/docs/zh/guides/get-started/glossary.mdx +63 -0
  684. package/docs/zh/guides/get-started/introduction.mdx +45 -0
  685. package/docs/zh/guides/get-started/quick-start.mdx +90 -0
  686. package/docs/zh/guides/get-started/tech-stack.mdx +91 -0
  687. package/docs/zh/guides/get-started/ultramodern.mdx +80 -0
  688. package/docs/zh/guides/get-started/upgrade.mdx +114 -0
  689. package/docs/zh/guides/topic-detail/_meta.json +8 -0
  690. package/docs/zh/guides/topic-detail/module-federation/_meta.json +1 -0
  691. package/docs/zh/guides/topic-detail/module-federation/application.mdx +117 -0
  692. package/docs/zh/guides/topic-detail/module-federation/deploy.mdx +104 -0
  693. package/docs/zh/guides/topic-detail/module-federation/i18n.mdx +623 -0
  694. package/docs/zh/guides/topic-detail/module-federation/introduce.mdx +35 -0
  695. package/docs/zh/guides/topic-detail/module-federation/ssr.mdx +168 -0
  696. package/docs/zh/guides/topic-detail/module-federation/usage.mdx +200 -0
  697. package/docs/zh/guides/troubleshooting/_meta.json +1 -0
  698. package/docs/zh/guides/troubleshooting/builder.mdx +134 -0
  699. package/docs/zh/guides/troubleshooting/cli.mdx +39 -0
  700. package/docs/zh/guides/troubleshooting/dependencies.mdx +123 -0
  701. package/docs/zh/guides/troubleshooting/hmr.mdx +148 -0
  702. package/docs/zh/guides/upgrade/_meta.json +1 -0
  703. package/docs/zh/guides/upgrade/config.mdx +953 -0
  704. package/docs/zh/guides/upgrade/entry.mdx +463 -0
  705. package/docs/zh/guides/upgrade/other.md +190 -0
  706. package/docs/zh/guides/upgrade/overview.mdx +36 -0
  707. package/docs/zh/guides/upgrade/tailwindcss.mdx +92 -0
  708. package/docs/zh/guides/upgrade/web-server.md +111 -0
  709. package/docs/zh/index.md +4 -0
  710. package/docs/zh/plugin/_meta.json +25 -0
  711. package/docs/zh/plugin/cli-plugins/_meta.json +1 -0
  712. package/docs/zh/plugin/cli-plugins/api.mdx +569 -0
  713. package/docs/zh/plugin/cli-plugins/life-cycle.mdx +135 -0
  714. package/docs/zh/plugin/introduction.mdx +153 -0
  715. package/docs/zh/plugin/official/_meta.json +7 -0
  716. package/docs/zh/plugin/official/cli-plugins/_meta.json +1 -0
  717. package/docs/zh/plugin/official/cli-plugins/plugin-bff.mdx +5 -0
  718. package/docs/zh/plugin/official/cli-plugins/plugin-ssg.mdx +5 -0
  719. package/docs/zh/plugin/official/cli-plugins/plugin-styled-components.mdx +5 -0
  720. package/docs/zh/plugin/official/cli-plugins.mdx +4 -0
  721. package/docs/zh/plugin/plugin-system.mdx +231 -0
  722. package/docs/zh/plugin/runtime-plugins/_meta.json +1 -0
  723. package/docs/zh/plugin/runtime-plugins/api.mdx +193 -0
  724. package/docs/zh/plugin/runtime-plugins/life-cycle.mdx +29 -0
  725. package/docs/zh/plugin/server-plugins/_meta.json +1 -0
  726. package/docs/zh/plugin/server-plugins/api.mdx +212 -0
  727. package/docs/zh/plugin/server-plugins/life-cycle.mdx +43 -0
  728. package/docs/zh/tutorials/_meta.json +7 -0
  729. package/docs/zh/tutorials/examples/csr-auth.mdx +31 -0
  730. package/docs/zh/tutorials/foundations/introduction.mdx +22 -0
  731. package/i18n.json +142 -0
  732. package/main-doc/docs/en/guides/get-started/ultramodern.mdx +320 -0
  733. package/main-doc/docs/zh/guides/get-started/ultramodern.mdx +304 -0
  734. package/package.json +52 -0
  735. package/rspress.config.ts +153 -0
  736. package/src/components/ContentCard/index.module.scss +65 -0
  737. package/src/components/ContentCard/index.tsx +24 -0
  738. package/src/components/FeatureLayout/index.module.css +8 -0
  739. package/src/components/FeatureLayout/index.tsx +8 -0
  740. package/src/components/Footer/index.tsx +118 -0
  741. package/src/components/Footer/styles.module.scss +49 -0
  742. package/src/components/FrameworkCode/index.tsx +605 -0
  743. package/src/components/ListCard/index.module.css +57 -0
  744. package/src/components/ListCard/index.tsx +26 -0
  745. package/src/components/Mermaid/index.tsx +64 -0
  746. package/src/components/Mermaid/style.scss +221 -0
  747. package/src/components/RandomMemberList/index.module.scss +35 -0
  748. package/src/components/RandomMemberList/index.tsx +122 -0
  749. package/src/components/RsbuildLink/index.tsx +19 -0
  750. package/src/components/Sandpack/index.css +10 -0
  751. package/src/components/Sandpack/index.tsx +22 -0
  752. package/src/components/SecondaryTitle/index.module.css +14 -0
  753. package/src/components/SecondaryTitle/index.tsx +15 -0
  754. package/src/components/ShowcaseList/index.module.scss +80 -0
  755. package/src/components/ShowcaseList/index.tsx +39 -0
  756. package/src/components/ShowcaseList/useShowcases.ts +101 -0
  757. package/src/components/SolutionCards/index.module.scss +73 -0
  758. package/src/components/SolutionCards/index.tsx +30 -0
  759. package/src/custom.scss +15 -0
  760. package/src/global.d.ts +28 -0
  761. package/src/i18n/enUS.ts +54 -0
  762. package/src/i18n/index.ts +18 -0
  763. package/src/i18n/zhCN.ts +54 -0
  764. package/src/index.ts +5 -0
  765. package/src/pages/index.module.scss +349 -0
  766. package/src/pages/index.tsx +133 -0
  767. package/src/sandbox/csr-auth/src/routes/Auth-tsx.txt +74 -0
  768. package/src/sandbox/csr-auth/src/routes/fakeAuth-ts.txt +16 -0
  769. package/src/sandbox/csr-auth/src/routes/layout-tsx.txt +21 -0
  770. package/src/sandbox/csr-auth/src/routes/login/page-tsx.txt +40 -0
  771. package/src/sandbox/csr-auth/src/routes/page-tsx.txt +17 -0
  772. package/src/sandbox/csr-auth/src/routes/protected/page-tsx.txt +11 -0
  773. package/static/img/favicon.ico +0 -0
  774. package/static/img/features/ai.svg +1 -0
  775. package/static/img/features/api.svg +1 -0
  776. package/static/img/features/app.svg +1 -0
  777. package/static/img/features/blocks.svg +1 -0
  778. package/static/img/features/browser.svg +12 -0
  779. package/static/img/features/cloud.svg +1 -0
  780. package/static/img/features/coding-backend.svg +1 -0
  781. package/static/img/features/compiler.svg +1 -0
  782. package/static/img/features/css-file.svg +1 -0
  783. package/static/img/features/customize.svg +1 -0
  784. package/static/img/features/developer.svg +1 -0
  785. package/static/img/features/dynamic.svg +1 -0
  786. package/static/img/features/editor.svg +1 -0
  787. package/static/img/features/framework-config.svg +1 -0
  788. package/static/img/features/framework.svg +1 -0
  789. package/static/img/features/frameworks.svg +1 -0
  790. package/static/img/features/html.svg +1 -0
  791. package/static/img/features/icon2.svg +1 -0
  792. package/static/img/features/javascript.svg +1 -0
  793. package/static/img/features/monorepo.svg +1 -0
  794. package/static/img/features/product.svg +1 -0
  795. package/static/img/features/server-network.svg +1 -0
  796. package/static/img/features/serverless.svg +1 -0
  797. package/static/img/features/test.svg +1 -0
  798. package/static/img/features/trinity.svg +1 -0
  799. package/static/img/features/unity.svg +1 -0
  800. package/static/img/features/url.svg +1 -0
  801. package/static/img/features/visual.svg +1 -0
  802. package/static/img/features/web-server.svg +1 -0
@@ -0,0 +1,153 @@
1
+ # Introduction
2
+
3
+ Modern.js provides a powerful plugin system that allows developers to extend the framework's functionality, customize the build process, and meet a variety of personalized development needs. Whether you want to add a custom command, optimize build output, or implement a unique deployment solution, Modern.js's plugin system provides robust support.
4
+
5
+ ## Why Plugins?
6
+
7
+ In web application development, we often encounter needs that the framework itself cannot directly satisfy, such as:
8
+
9
+ - **I want to add a custom command-line tool to help me automate some tasks.**
10
+ - **I want to be able to handle a new file format, such as `.xyz`.**
11
+ - **I need to perform some initialization operations before the application starts.**
12
+ - **I want to perform special processing on the generated CSS files.**
13
+ - **I need to customize the application's routing logic or add some server-side middleware.**
14
+
15
+ Without a plugin system, these requirements might require modifying the framework's source code or resorting to cumbersome hacks. Modern.js's plugin system offers an elegant, flexible, and maintainable solution.
16
+
17
+ ## When to Use Which Plugin?
18
+
19
+ Modern.js offers two main types of plugins: Modern.js framework plugins and Rsbuild build plugins. The choice of which plugin to use depends on your specific needs:
20
+
21
+ - **Rsbuild Build Plugins:** If your needs are closely related to the build process, especially involving modifications to Rspack configuration, then you should choose an Rsbuild plugin. For example:
22
+
23
+ - Modifying Rspack `loader` or `plugin` configurations.
24
+ - Handling new file types.
25
+ - Modifying or compiling file contents.
26
+ - Optimizing or processing build artifacts.
27
+
28
+ - **Modern.js Framework Plugins:** If your needs relate to the extension of Modern.js framework itself, runtime behavior, or server-side logic, then you should choose a Modern.js plugin. For example:
29
+ - Adding custom command-line commands.
30
+ - Modifying the application's routing configuration.
31
+ - Customizing the application's rendering process (e.g., SSR).
32
+ - Adding server-side middleware or handler functions.
33
+
34
+ In short, use Rsbuild plugins when you need to modify Rspack configurations; use Modern.js plugins for other framework-related extensions.
35
+
36
+ ## Modern.js Framework Plugins
37
+
38
+ ### Plugin Types
39
+
40
+ Modern.js framework plugins can be further divided into three categories:
41
+
42
+ #### CLI Plugins
43
+
44
+ CLI plugins are used to provide additional functionality when running `modern` commands in the application, such as adding commands, modifying configurations, and listening for file changes. Most build-related capabilities can be implemented through CLI plugins.
45
+
46
+ CLI plugins can be configured via the `plugins` field in `modern.config.ts`.
47
+
48
+ ```ts title="modern.config.ts"
49
+ // an example for bff
50
+ import { appTools, defineConfig } from '@modern-js/app-tools';
51
+ import { bffPlugin } from '@modern-js/plugin-bff';
52
+
53
+ export default defineConfig({
54
+ plugins: [appTools(), bffPlugin()],
55
+ });
56
+ ```
57
+
58
+ #### Runtime Plugins
59
+
60
+ Runtime plugins are used to provide additional functionality when the application is running React code, such as performing initialization behaviors and implementing React Higher-Order Component (HOC) encapsulation.
61
+
62
+ Runtime plugins are configured via the `plugins` field in `src/modern.runtime.ts`.
63
+
64
+ ```ts title="src/modern.runtime.ts"
65
+ import { defineRuntimeConfig } from '@modern-js/runtime';
66
+ import { routerPlugin } from '@modern-js/runtime/router';
67
+
68
+ export default defineRuntimeConfig({
69
+ plugins: [routerPlugin()],
70
+ });
71
+ ```
72
+
73
+ #### Server Plugins
74
+
75
+ Server plugins are used to provide additional functionality when the application receives requests, such as adding middleware and modifying request responses.
76
+
77
+ Server plugins are configured via the `plugins` field in `server/modern.server.ts`.
78
+
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
+ ],
101
+ });
102
+ ```
103
+
104
+ ### Developing Plugins
105
+
106
+ If you need to develop Modern.js framework plugins, please read [Modern.js Plugin System](/plugin/plugin-system) for more information.
107
+
108
+ ## Rsbuild Build Plugins
109
+
110
+ Rsbuild is the underlying build tool for Modern.js. By adding Rsbuild plugins, you can modify the default build behavior and add various additional functionalities, including but not limited to:
111
+
112
+ - Modifying Rsbuild configuration
113
+ - Handling new file types
114
+ - Modifying or compiling files
115
+ - Deploying artifacts
116
+
117
+ You can register Rsbuild plugins in `modern.config.ts` via the `builderPlugins` option. See [builderPlugins](/configure/app/builder-plugins.html) for details.
118
+
119
+ :::info
120
+ You can read [Rsbuild Official Website - Plugins](https://v2.rsbuild.rs/plugins/list/index) to learn more about the Rsbuild plugin system.
121
+ :::
122
+
123
+ ### Official Plugins
124
+
125
+ #### Built-in Plugins
126
+
127
+ The following are official Rsbuild plugins that are already built into Modern.js. They can be enabled without installation:
128
+
129
+ | Plugin | Description | Modern.js Link |
130
+ | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
131
+ | [React Plugin](https://v2.rsbuild.rs/plugins/list/plugin-react) | Provides support for React | - |
132
+ | [SVGR Plugin](https://v2.rsbuild.rs/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) |
133
+ | [Assets Retry Plugin](https://github.com/rstackjs/rsbuild-plugin-assets-retry) | Automatically retries requests when static asset loading fails | [output.assetsRetry](/configure/app/output/assets-retry.html) |
134
+ | [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) |
135
+ | [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) |
136
+ | [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) |
137
+ | [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) |
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
+
140
+ #### Plugins Not Built-in
141
+
142
+ The following are official Rsbuild plugins that are not built into Modern.js:
143
+
144
+ - [Image Compress Plugin](https://github.com/rspack-contrib/rsbuild-plugin-image-compress): Compresses image resources used in the project.
145
+ - [Stylus Plugin](https://v2.rsbuild.rs/plugins/list/plugin-stylus): Uses Stylus as the CSS preprocessor.
146
+ - [UMD Plugin](https://github.com/rspack-contrib/rsbuild-plugin-umd): Used to build UMD format artifacts.
147
+ - [YAML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-yaml): Used to reference YAML files and convert them to JavaScript objects.
148
+ - [TOML Plugin](https://github.com/rspack-contrib/rsbuild-plugin-toml): Used to reference TOML files and convert them to JavaScript objects.
149
+
150
+ import OtherPlugins from '@site-docs-en/components/other-plugins.mdx';
151
+
152
+ <OtherPlugins />
153
+ ```
@@ -0,0 +1,7 @@
1
+ [
2
+ {
3
+ "type": "dir",
4
+ "name": "cli-plugins",
5
+ "label": "cli-plugins"
6
+ }
7
+ ]
@@ -0,0 +1 @@
1
+ ["plugin-bff", "plugin-ssg", "plugin-styled-components"]
@@ -0,0 +1,5 @@
1
+ # BFF Plugin
2
+
3
+ In a Modern.js application, developers can define API files under the `api/lambda` directory and export API functions using the BFF plugin. In the frontend code, these API functions can be directly invoked by importing the file, which initiates the API requests.
4
+
5
+ For more details, refer to [BFF - Basic Usage](/guides/advanced-features/bff/function).
@@ -0,0 +1,5 @@
1
+ # SSG Plugin
2
+
3
+ SSG (Static Site Generation) is a technical solution that renders complete static web pages at build time based on data and templates. This means that in a production environment, pages are populated with content by default and can be cached by a CDN. For pages that do not require dynamic data, SSG can provide better performance and higher security.
4
+
5
+ For more details, refer to [Static Site Generation (SSG)](/guides/basic-features/render/ssg).
@@ -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).
@@ -0,0 +1,4 @@
1
+ # Overview
2
+
3
+ - [@modern-js/plugin-bff](/plugin/official/cli-plugins/plugin-bff): Provides BFF services and unified invocation capabilities.
4
+ - [@modern-js/plugin-ssg](/plugin/official/cli-plugins/plugin-ssg): Provides static site generation capabilities.
@@ -0,0 +1,244 @@
1
+ # Plugin System
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.
4
+
5
+ ## Core Concept: Everything is a Plugin
6
+
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
+
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
+
14
+ ## Plugin Types and Use Cases
15
+
16
+ Modern.js provides three main plugin types, corresponding to different stages of application development:
17
+
18
+ **CLI Plugins:**
19
+ - **Active Stage:** Build time (when executing the `modern` command).
20
+ - **Typical Scenarios:**
21
+ - Extending command-line tools.
22
+ - Modifying build configurations.
23
+ - Listening for file changes.
24
+ - Controlling the build process.
25
+ - **Configuration Method:** The `plugins` field in `modern.config.ts`.
26
+
27
+ **Runtime Plugins:**
28
+ - **Active Stage:** Application runtime (browser/Node.js environment).
29
+ - **Typical Scenarios:**
30
+ - Initializing global state or services.
31
+ - Encapsulating React Higher-Order Components (HOCs).
32
+ - Intercepting or modifying routing behavior.
33
+ - Controlling the rendering process.
34
+ - **Configuration Method:** The `plugins` field in `src/modern.runtime.ts`.
35
+
36
+ {/* **Server Plugins:**
37
+ - **Active Stage:** Server request processing stage.
38
+ - **Typical Scenarios:**
39
+ - Adding custom middleware.
40
+ - Extending server-side APIs.
41
+ - Customizing SSR logic.
42
+ - Integrating with backend frameworks.
43
+ - **Configuration Method:** The `plugins` field in `server/modern.server.ts`. */}
44
+
45
+ ## Plugin Structure
46
+
47
+ A typical Modern.js plugin consists of the following key parts:
48
+
49
+ ```ts
50
+ import type { Plugin } from '@modern-js/plugin';
51
+
52
+ const myPlugin: Plugin = {
53
+ name: 'my-awesome-plugin', // The unique identifier of the plugin (required)
54
+
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
59
+ usePlugins: [], // List of plugin instances used internally, defaults to an empty array
60
+
61
+ // Register new Hooks (optional)
62
+ registryHooks: {},
63
+
64
+ // The entry function of the plugin (required)
65
+ setup(api) {
66
+ // The core logic of the plugin, calling plugin APIs through the api object
67
+ api.modifyRspackConfig(config => {
68
+ /* ... */
69
+ });
70
+ api.onPrepare(() => {
71
+ /* ... */
72
+ });
73
+ // ... Other API calls
74
+ },
75
+ };
76
+
77
+ export default myPlugin;
78
+ ```
79
+
80
+ **Field Descriptions:**
81
+
82
+ ##### `name`
83
+
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.
86
+
87
+ :::info
88
+ The plugin names declared in `pre`, `post`, and `required` refer to this `name` field.
89
+ :::
90
+
91
+ ##### `setup`
92
+
93
+ - Type: `(api: PluginAPI) => MaybePromise<void>`
94
+ - Description: The main entry point for the plugin's logic.
95
+
96
+ ###### `api`
97
+
98
+ - Type: `PluginAPI`
99
+ - Description: The plugin's API, containing the Hooks and utility functions supported by the plugin.
100
+
101
+ ##### `pre`
102
+
103
+ - Type: `string[]`
104
+ - Description: Used to insert the plugin execution order. Plugins declared in `pre` will be executed before this plugin.
105
+
106
+ ##### `post`
107
+
108
+ - Type: `string[]`
109
+ - Description: Used to determine the plugin execution order. Plugins declared in `post` will be executed after this plugin.
110
+
111
+ ##### `required`
112
+
113
+ - Type: `string[]`
114
+ - Description: Other plugins that this plugin depends on. Before running, it will check if the dependent plugins are registered.
115
+
116
+ :::info
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.
118
+
119
+ If you need to explicitly declare that the plugins that the current plugin depends on must exist, you need to use the `required` field.
120
+ :::
121
+
122
+ ##### `usePlugins`
123
+
124
+ - Type: `Plugin`
125
+ - Description: Actively register other plugins of the same type within the plugin.
126
+
127
+ :::info
128
+ Plugins declared in `usePlugins` are executed before the current plugin by default. To execute them after, use the `post` declaration.
129
+ :::
130
+
131
+ ##### `registryHooks`
132
+
133
+ - Type: `Record<string, PluginHook<(...args: any[]) => any>>`
134
+ - Description: Extend the currently supported Hook functions to implement custom functionality.
135
+
136
+ ## Plugin Hook Model
137
+
138
+ The core of the Modern.js plugin system is its Hook model, which defines the communication mechanism between plugins. Modern.js mainly provides two types of Hooks:
139
+
140
+ ### Async Hook
141
+
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`.
148
+
149
+ Example:
150
+
151
+ ```ts
152
+ // Define Hooks
153
+ import { createAsyncHook } from '@modern-js/plugin';
154
+
155
+ export type AfterPrepareFn = () => Promise<void> | void;
156
+ export const onAfterPrepare = createAsyncHook<AfterPrepareFn>();
157
+
158
+ // Register Hooks in the plugin
159
+ const myPlugin = () => ({
160
+ name: 'my-plugin',
161
+ registryHooks: {
162
+ onAfterPrepare,
163
+ },
164
+ setup: api => {
165
+ api.onPrepare(async () => {
166
+ // Use the registered Hooks in the plugin
167
+ const hooks = api.getHooks();
168
+ await hooks.onAfterPrepare.call();
169
+ });
170
+ },
171
+ });
172
+
173
+ // Use Hook in other plugins
174
+ const myPlugin2 = () => ({
175
+ name: 'my-plugin-2',
176
+ setup: api => {
177
+ api.onAfterPrepare(async () => {
178
+ // TODO
179
+ });
180
+ },
181
+ });
182
+ ```
183
+
184
+ ### Sync Hook (Synchronous Hook)
185
+
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`.
192
+
193
+ Example:
194
+
195
+ ```ts
196
+ // Define Hooks
197
+ import { createSyncHook } from '@modern-js/plugin';
198
+
199
+ type RouteObject = {
200
+ /** TODO **/
201
+ };
202
+ const modifyRoutes = createSyncHook<(routes: RouteObject[]) => RouteObject[]>();
203
+
204
+ // Register Hooks in the plugin
205
+ const myPlugin = () => ({
206
+ name: 'my-plugin',
207
+ registryHooks: {
208
+ modifyRoutes,
209
+ },
210
+ setup: api => {
211
+ api.onPrepare(async () => {
212
+ const routes = {};
213
+ // Use registered Hooks in the plugin
214
+ const hooks = api.getHooks();
215
+ const routesResult = hooks.modifyRoutes.call(routes);
216
+ });
217
+ },
218
+ });
219
+
220
+ // Other plugins use Hooks
221
+ const myPlugin2 = () => ({
222
+ name: 'my-plugin',
223
+ setup: api => {
224
+ api.modifyRoutes(routes => {
225
+ // Modify routes
226
+ return routes;
227
+ });
228
+ },
229
+ });
230
+ ```
231
+
232
+ ## Plugin Development Best Practices
233
+
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.
243
+
244
+ Following these best practices can help you develop high-quality, easy-to-maintain, and easy-to-use Modern.js plugins.
@@ -0,0 +1 @@
1
+ ["api", "life-cycle"]
@@ -0,0 +1,193 @@
1
+ # Plugin API
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.
4
+
5
+ :::info
6
+
7
+ Runtime plugins need to be configured via the [`plugins`](/configure/app/runtime/plugins) field in `src/modern.runtime.ts`.
8
+
9
+ :::
10
+
11
+ ## Plugin Structure
12
+
13
+ A typical Runtime Plugin looks like this:
14
+
15
+ ```ts
16
+ import type { RuntimePlugin } from '@modern-js/runtime';
17
+
18
+ const myRuntimePlugin = (): RuntimePlugin => ({
19
+ name: 'my-runtime-plugin',
20
+ setup: api => {
21
+ // Use the api to register hooks
22
+ api.onBeforeRender(context => {
23
+ console.log('Before rendering:', context);
24
+ });
25
+
26
+ api.wrapRoot(App => {
27
+ return props => (
28
+ <MyContextProvider>
29
+ <App {...props} />
30
+ </MyContextProvider>
31
+ );
32
+ });
33
+ },
34
+ });
35
+
36
+ export default myRuntimePlugin;
37
+ ```
38
+
39
+ - `name`: A unique identifier for the plugin.
40
+ - `setup`: A function that receives an `api` object, which provides all available Runtime plugin APIs.
41
+
42
+ ## API Overview
43
+
44
+ The Runtime Plugin API is primarily divided into the following categories:
45
+
46
+ - **Information Retrieval**: Getting runtime configuration and hook functions.
47
+ - **Lifecycle Hooks**: Executing custom logic at different stages of the application's rendering process.
48
+
49
+ ### Information Retrieval
50
+
51
+ #### `api.getRuntimeConfig`
52
+
53
+ Gets the runtime configuration defined by the user in the `modern.runtime.ts` file.
54
+
55
+ - **Usage**:
56
+
57
+ ```ts
58
+ const config = api.getRuntimeConfig();
59
+ console.log(config.myCustomSetting);
60
+ ```
61
+
62
+ :::warning
63
+
64
+ This method returns a _copy_ of the user's configuration. Modifying the returned value will not affect the original configuration.
65
+ :::
66
+
67
+ #### `api.getHooks`
68
+
69
+ Gets the hook functions that can be triggered manually.
70
+
71
+ - **Type:**
72
+
73
+ ```ts
74
+ () => {
75
+ onBeforeRender: {
76
+ call: (context: any) => Promise<void>;
77
+ }
78
+ // Other hooks...
79
+ };
80
+ ```
81
+
82
+ - **Usage:**
83
+
84
+ ```ts
85
+ const hooks = api.getHooks();
86
+ await hooks.onBeforeRender.call(myContext);
87
+ ```
88
+
89
+ ### Lifecycle Hooks
90
+
91
+ #### `api.onBeforeRender`
92
+
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.
94
+
95
+ - **Type:**
96
+
97
+ ```ts
98
+ type OnBeforeRenderFn<RuntimeContext> = (
99
+ context: RuntimeContext,
100
+ ) => Promise<void> | void;
101
+ ```
102
+
103
+ `RuntimeContext` contains contextual information about the current request, such as the request object, response object, etc.
104
+
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
+ ```
113
+
114
+ :::warning
115
+
116
+ - This hook executes before **every** render, so avoid performing long-running operations.
117
+ - You can modify the `context` object in this hook, and the modified `context` will be passed to subsequent rendering processes.
118
+
119
+ :::
120
+
121
+ #### `api.wrapRoot`
122
+
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.
124
+
125
+ - **Type:**
126
+
127
+ ```ts
128
+ type WrapRootFn = (App: React.ComponentType<any>) => React.ComponentType<any>;
129
+ ```
130
+
131
+ - **Usage:**
132
+
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
149
+
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.
152
+
153
+ :::
154
+
155
+ ## Advanced Usage
156
+
157
+ ### Combining Hooks
158
+
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:
160
+
161
+ ```ts
162
+ import { RuntimePlugin, RuntimeContext } from '@modern-js/runtime';
163
+ import { useContext, createContext } from 'react';
164
+
165
+ export const ThemeContext = createContext<{ theme: string } | null>(null);
166
+
167
+ export const themePlugin = (): RuntimePlugin => {
168
+ return {
169
+ name: 'theme-plugin',
170
+ setup: api => {
171
+ api.onBeforeRender(async context => {
172
+ const userPreference = await fetch('/api/user/theme-settings').then(
173
+ res => res.json(),
174
+ );
175
+ context.data = {
176
+ theme: userPreference.theme,
177
+ };
178
+ });
179
+
180
+ api.wrapRoot(App => {
181
+ return props => {
182
+ const context = useContext(RuntimeContext);
183
+ return (
184
+ <ThemeContext.Provider value={context.data}>
185
+ <App {...props} />
186
+ </ThemeContext.Provider>
187
+ );
188
+ };
189
+ });
190
+ },
191
+ };
192
+ };
193
+ ```
@@ -0,0 +1,29 @@
1
+ # Life Cycle
2
+
3
+ import Mermaid from '@site/src/components/Mermaid';
4
+
5
+ <Mermaid>
6
+ {`
7
+ flowchart TD
8
+ init{{"Runtime Initialization"}}
9
+ load_config(Load User Configuration File)
10
+ runtime_plugin(Load Runtime Plugins<br><sub>Plugins registered in the configuration file<br>Runtime plugins registered by CLI<br>Plugins used within plugins</sub>)
11
+ registry_hooks(Register Hooks Functions<br><sub>Execute the plugin setup function, register hooks defined in the plugin, and the logic in the plugin setup will also be executed here</sub>)
12
+
13
+ wrapRoot(wrapRoot<br><sub>The logic returned in wrapRoot will be executed when the component is rendered</sub>)
14
+ onBeforeRender(onBeforeRender)
15
+
16
+ init --> load_config
17
+ load_config --> runtime_plugin
18
+ runtime_plugin --> registry_hooks
19
+ registry_hooks --> wrapRoot
20
+ wrapRoot --> onBeforeRender
21
+
22
+ style init fill:#FDE68A,font-size:10px;
23
+ style load_config stroke-dasharray:5 5,fill:#86EFAC,font-size:10px;
24
+ style runtime_plugin stroke-dasharray:5 5,fill:#86EFAC,font-size:10px;
25
+ style registry_hooks stroke-dasharray:5 5,fill:#9CA3AF,font-size:10px;
26
+ style wrapRoot font-size:10px;
27
+ style onBeforeRender font-size:10px;
28
+ `}
29
+ </Mermaid>
@@ -0,0 +1 @@
1
+ ["api", "life-cycle"]