@bleedingdev/modern-js-app-tools 3.5.0-ultramodern.98 → 3.5.0-ultramodern.99

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 (368) hide show
  1. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
  2. package/dist/cjs/builder/generator/getBuilderEnvironments.js +7 -0
  3. package/dist/cjs/commands/build.js +2 -1
  4. package/dist/cjs/commands/deploy.js +4 -2
  5. package/dist/cjs/commands/index.js +0 -4
  6. package/dist/cjs/config/default.js +2 -0
  7. package/dist/cjs/index.js +56 -15
  8. package/dist/cjs/plugins/analyze/index.js +2 -2
  9. package/dist/cjs/plugins/analyze/utils.js +3 -2
  10. package/dist/cjs/plugins/initialize/index.js +4 -3
  11. package/dist/cjs/plugins/serverBuild.js +3 -2
  12. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
  13. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +7 -0
  14. package/dist/esm/commands/build.mjs +2 -1
  15. package/dist/esm/commands/deploy.mjs +4 -2
  16. package/dist/esm/commands/index.mjs +0 -4
  17. package/dist/esm/config/default.mjs +2 -0
  18. package/dist/esm/index.mjs +15 -1
  19. package/dist/esm/plugins/analyze/index.mjs +2 -2
  20. package/dist/esm/plugins/analyze/utils.mjs +3 -2
  21. package/dist/esm/plugins/initialize/index.mjs +4 -3
  22. package/dist/esm/plugins/serverBuild.mjs +3 -2
  23. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
  24. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +7 -0
  25. package/dist/esm-node/commands/build.mjs +2 -1
  26. package/dist/esm-node/commands/deploy.mjs +4 -2
  27. package/dist/esm-node/commands/index.mjs +0 -4
  28. package/dist/esm-node/config/default.mjs +2 -0
  29. package/dist/esm-node/index.mjs +15 -1
  30. package/dist/esm-node/plugins/analyze/index.mjs +2 -2
  31. package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
  32. package/dist/esm-node/plugins/initialize/index.mjs +4 -3
  33. package/dist/esm-node/plugins/serverBuild.mjs +3 -2
  34. package/dist/types/commands/deploy.d.ts +2 -1
  35. package/dist/types/index.d.ts +4 -1
  36. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  37. package/dist/types/types/config/dev.d.ts +6 -0
  38. package/docs/_nav.json +36 -0
  39. package/docs/apis/_meta.json +13 -0
  40. package/docs/apis/app/commands.mdx +205 -0
  41. package/docs/apis/app/hooks/_meta.json +28 -0
  42. package/docs/apis/app/hooks/api/lambda.mdx +13 -0
  43. package/docs/apis/app/hooks/config/_meta.json +1 -0
  44. package/docs/apis/app/hooks/config/favicon.mdx +29 -0
  45. package/docs/apis/app/hooks/config/html.mdx +9 -0
  46. package/docs/apis/app/hooks/config/icon.mdx +29 -0
  47. package/docs/apis/app/hooks/config/mock.mdx +10 -0
  48. package/docs/apis/app/hooks/config/public.mdx +30 -0
  49. package/docs/apis/app/hooks/config/upload.mdx +54 -0
  50. package/docs/apis/app/hooks/modern-config.mdx +9 -0
  51. package/docs/apis/app/hooks/server/server.mdx +10 -0
  52. package/docs/apis/app/hooks/shared.mdx +7 -0
  53. package/docs/apis/app/hooks/src/app.mdx +30 -0
  54. package/docs/apis/app/hooks/src/entry.mdx +39 -0
  55. package/docs/apis/app/hooks/src/entry.server.mdx +56 -0
  56. package/docs/apis/app/hooks/src/modern.runtime.mdx +9 -0
  57. package/docs/apis/app/hooks/src/routes.mdx +90 -0
  58. package/docs/apis/app/hooks/src/server.mdx +7 -0
  59. package/docs/apis/app/runtime/_meta.json +32 -0
  60. package/docs/apis/app/runtime/bff/use-backend-context.mdx +30 -0
  61. package/docs/apis/app/runtime/core/create-root.mdx +22 -0
  62. package/docs/apis/app/runtime/core/render.mdx +42 -0
  63. package/docs/apis/app/runtime/core/runtime-context.mdx +160 -0
  64. package/docs/apis/app/runtime/router/router.mdx +288 -0
  65. package/docs/apis/app/runtime/ssr/no-ssr.mdx +38 -0
  66. package/docs/apis/app/runtime/ssr/renderStreaming.mdx +71 -0
  67. package/docs/apis/app/runtime/ssr/renderString.mdx +64 -0
  68. package/docs/apis/app/runtime/ssr/requestHandler.mdx +48 -0
  69. package/docs/apis/app/runtime/utility/css-in-js.mdx +44 -0
  70. package/docs/apis/app/runtime/utility/head.mdx +38 -0
  71. package/docs/apis/app/runtime/utility/loadable.mdx +85 -0
  72. package/docs/components/auto-upgrade.mdx +0 -0
  73. package/docs/components/bff-upload.mdx +97 -0
  74. package/docs/components/build-output.mdx +45 -0
  75. package/docs/components/bundler.mdx +3 -0
  76. package/docs/components/convention-routing-motivation.mdx +0 -0
  77. package/docs/components/debug-app.mdx +15 -0
  78. package/docs/components/default-browserslist.mdx +7 -0
  79. package/docs/components/deploy-command.mdx +14 -0
  80. package/docs/components/deploy.mdx +1 -0
  81. package/docs/components/enable-bff-caution.mdx +3 -0
  82. package/docs/components/enable-bff.mdx +56 -0
  83. package/docs/components/enable-ssg.mdx +49 -0
  84. package/docs/components/entry-mode.mdx +0 -0
  85. package/docs/components/entry-scan-logic.mdx +7 -0
  86. package/docs/components/extend-bff-function.mdx +3 -0
  87. package/docs/components/hono.mdx +120 -0
  88. package/docs/components/init-app.mdx +93 -0
  89. package/docs/components/init-rspack-app.mdx +5 -0
  90. package/docs/components/internal-logger.mdx +25 -0
  91. package/docs/components/internal-metrics.mdx +20 -0
  92. package/docs/components/international/custom-instance-code.mdx +16 -0
  93. package/docs/components/international/init-options-desc.mdx +1 -0
  94. package/docs/components/international/install-command.mdx +10 -0
  95. package/docs/components/international/instance-code.mdx +16 -0
  96. package/docs/components/international/introduce.mdx +5 -0
  97. package/docs/components/international/platform-support.mdx +0 -0
  98. package/docs/components/language-config.mdx +9 -0
  99. package/docs/components/micro-frontend.mdx +6 -0
  100. package/docs/components/micro-master-manifest-config.mdx +15 -0
  101. package/docs/components/micro-runtime-config.mdx +17 -0
  102. package/docs/components/module-federation.mdx +7 -0
  103. package/docs/components/new-entry-tooltip.mdx +0 -0
  104. package/docs/components/nodeVersion.mdx +28 -0
  105. package/docs/components/other-plugins.mdx +0 -0
  106. package/docs/components/output-asset-prefix-extend.mdx +0 -0
  107. package/docs/components/output-distpath-warning.mdx +0 -0
  108. package/docs/components/output-polyfill-extend.mdx +1 -0
  109. package/docs/components/prerequisites.mdx +18 -0
  110. package/docs/components/release-note.mdx +1 -0
  111. package/docs/components/routes-practice.mdx +0 -0
  112. package/docs/components/rsbuild-config-tooltip.mdx +5 -0
  113. package/docs/components/rsbuild.mdx +3 -0
  114. package/docs/components/rsc-deploy-tip.mdx +1 -0
  115. package/docs/components/rspack.mdx +3 -0
  116. package/docs/components/rspackTip.mdx +7 -0
  117. package/docs/components/runtime-cli-config.mdx +0 -0
  118. package/docs/components/serve-command.mdx +22 -0
  119. package/docs/components/ssr-monitor.mdx +3 -0
  120. package/docs/components/stream-ssr-performance.mdx +0 -0
  121. package/docs/components/swc.mdx +3 -0
  122. package/docs/components/tech-stack-node-framework.mdx +1 -0
  123. package/docs/components/turtorials-example-list.mdx +2 -0
  124. package/docs/components/ua-polyfill.mdx +44 -0
  125. package/docs/components/upgrade-browserslist.mdx +0 -0
  126. package/docs/components/upgrade-config-deploy.mdx +0 -0
  127. package/docs/components/upgrade-faq.mdx +0 -0
  128. package/docs/configure/_meta.json +78 -0
  129. package/docs/configure/app/bff/cross-project.mdx +24 -0
  130. package/docs/configure/app/bff/effect.mdx +319 -0
  131. package/docs/configure/app/bff/prefix.mdx +33 -0
  132. package/docs/configure/app/bff/runtime-framework.mdx +30 -0
  133. package/docs/configure/app/builder-plugins.mdx +70 -0
  134. package/docs/configure/app/dev/asset-prefix.mdx +18 -0
  135. package/docs/configure/app/dev/before-start-url.mdx +21 -0
  136. package/docs/configure/app/dev/client.mdx +45 -0
  137. package/docs/configure/app/dev/hmr.mdx +14 -0
  138. package/docs/configure/app/dev/host.mdx +22 -0
  139. package/docs/configure/app/dev/https.mdx +81 -0
  140. package/docs/configure/app/dev/lazy-compilation.mdx +45 -0
  141. package/docs/configure/app/dev/live-reload.mdx +14 -0
  142. package/docs/configure/app/dev/mock-dir.mdx +35 -0
  143. package/docs/configure/app/dev/progress-bar.mdx +23 -0
  144. package/docs/configure/app/dev/server.mdx +128 -0
  145. package/docs/configure/app/dev/setup-middlewares.mdx +36 -0
  146. package/docs/configure/app/dev/start-url.mdx +53 -0
  147. package/docs/configure/app/dev/watch-files.mdx +31 -0
  148. package/docs/configure/app/dev/write-to-disk.mdx +14 -0
  149. package/docs/configure/app/experiments/source-build.mdx +33 -0
  150. package/docs/configure/app/html/app-icon.mdx +32 -0
  151. package/docs/configure/app/html/crossorigin.mdx +14 -0
  152. package/docs/configure/app/html/favicon.mdx +20 -0
  153. package/docs/configure/app/html/inject.mdx +14 -0
  154. package/docs/configure/app/html/meta.mdx +28 -0
  155. package/docs/configure/app/html/mount-id.mdx +14 -0
  156. package/docs/configure/app/html/output-structure.mdx +14 -0
  157. package/docs/configure/app/html/script-loading.mdx +14 -0
  158. package/docs/configure/app/html/tags.mdx +19 -0
  159. package/docs/configure/app/html/template-parameters.mdx +37 -0
  160. package/docs/configure/app/html/template.mdx +14 -0
  161. package/docs/configure/app/html/title.mdx +22 -0
  162. package/docs/configure/app/output/asset-prefix.mdx +18 -0
  163. package/docs/configure/app/output/assets-retry.mdx +81 -0
  164. package/docs/configure/app/output/charset.mdx +14 -0
  165. package/docs/configure/app/output/clean-dist-path.mdx +20 -0
  166. package/docs/configure/app/output/convert-to-rem.mdx +83 -0
  167. package/docs/configure/app/output/copy.mdx +14 -0
  168. package/docs/configure/app/output/css-modules.mdx +52 -0
  169. package/docs/configure/app/output/data-uri-limit.mdx +30 -0
  170. package/docs/configure/app/output/disable-css-module-extension.mdx +59 -0
  171. package/docs/configure/app/output/disable-inline-runtime-chunk.mdx +45 -0
  172. package/docs/configure/app/output/disable-svgr.mdx +22 -0
  173. package/docs/configure/app/output/disable-ts-checker.mdx +53 -0
  174. package/docs/configure/app/output/dist-path.mdx +51 -0
  175. package/docs/configure/app/output/enable-asset-manifest.mdx +40 -0
  176. package/docs/configure/app/output/enable-css-module-tsdeclaration.mdx +32 -0
  177. package/docs/configure/app/output/enable-inline-route-manifests.mdx +20 -0
  178. package/docs/configure/app/output/externals.mdx +24 -0
  179. package/docs/configure/app/output/filename-hash.mdx +14 -0
  180. package/docs/configure/app/output/filename.mdx +59 -0
  181. package/docs/configure/app/output/inject-styles.mdx +14 -0
  182. package/docs/configure/app/output/inline-scripts.mdx +33 -0
  183. package/docs/configure/app/output/inline-styles.mdx +33 -0
  184. package/docs/configure/app/output/legal-comments.mdx +22 -0
  185. package/docs/configure/app/output/minify.mdx +26 -0
  186. package/docs/configure/app/output/override-browserslist.mdx +26 -0
  187. package/docs/configure/app/output/polyfill.mdx +18 -0
  188. package/docs/configure/app/output/source-map.mdx +34 -0
  189. package/docs/configure/app/output/split-route-chunks.mdx +20 -0
  190. package/docs/configure/app/output/ssg.mdx +85 -0
  191. package/docs/configure/app/output/ssgByEntries.mdx +93 -0
  192. package/docs/configure/app/output/svg-default-export.mdx +34 -0
  193. package/docs/configure/app/output/temp-dir.mdx +24 -0
  194. package/docs/configure/app/performance/build-cache.mdx +48 -0
  195. package/docs/configure/app/performance/chunk-split.mdx +44 -0
  196. package/docs/configure/app/performance/dns-prefetch.mdx +19 -0
  197. package/docs/configure/app/performance/preconnect.mdx +20 -0
  198. package/docs/configure/app/performance/prefetch.mdx +25 -0
  199. package/docs/configure/app/performance/preload.mdx +27 -0
  200. package/docs/configure/app/performance/print-file-size.mdx +44 -0
  201. package/docs/configure/app/performance/profile.mdx +14 -0
  202. package/docs/configure/app/performance/remove-console.mdx +14 -0
  203. package/docs/configure/app/performance/remove-moment-locale.mdx +14 -0
  204. package/docs/configure/app/performance/rsdoctor.mdx +42 -0
  205. package/docs/configure/app/plugins.mdx +59 -0
  206. package/docs/configure/app/resolve/alias-strategy.mdx +14 -0
  207. package/docs/configure/app/resolve/alias.mdx +13 -0
  208. package/docs/configure/app/resolve/condition-names.mdx +18 -0
  209. package/docs/configure/app/resolve/dedupe.mdx +13 -0
  210. package/docs/configure/app/resolve/extensions.mdx +18 -0
  211. package/docs/configure/app/runtime/0-intro.mdx +61 -0
  212. package/docs/configure/app/runtime/plugins.mdx +58 -0
  213. package/docs/configure/app/runtime/router.mdx +39 -0
  214. package/docs/configure/app/security/check-syntax.mdx +73 -0
  215. package/docs/configure/app/security/nonce.mdx +19 -0
  216. package/docs/configure/app/security/sri.mdx +24 -0
  217. package/docs/configure/app/server/base-url.mdx +30 -0
  218. package/docs/configure/app/server/port.mdx +22 -0
  219. package/docs/configure/app/server/public-routes.mdx +26 -0
  220. package/docs/configure/app/server/routes.mdx +90 -0
  221. package/docs/configure/app/server/rsc.mdx +30 -0
  222. package/docs/configure/app/server/ssr-by-entries.mdx +29 -0
  223. package/docs/configure/app/server/ssr.mdx +85 -0
  224. package/docs/configure/app/server/tsconfig-path.mdx +63 -0
  225. package/docs/configure/app/source/alias-strategy.mdx +18 -0
  226. package/docs/configure/app/source/alias.mdx +27 -0
  227. package/docs/configure/app/source/config-dir.mdx +24 -0
  228. package/docs/configure/app/source/decorators.mdx +29 -0
  229. package/docs/configure/app/source/define.mdx +20 -0
  230. package/docs/configure/app/source/disable-default-entries.mdx +32 -0
  231. package/docs/configure/app/source/enable-async-entry.mdx +54 -0
  232. package/docs/configure/app/source/enable-async-pre-entry.mdx +30 -0
  233. package/docs/configure/app/source/entries-dir.mdx +39 -0
  234. package/docs/configure/app/source/entries.mdx +183 -0
  235. package/docs/configure/app/source/exclude.mdx +14 -0
  236. package/docs/configure/app/source/global-vars.mdx +110 -0
  237. package/docs/configure/app/source/include.mdx +40 -0
  238. package/docs/configure/app/source/main-entry-name.mdx +28 -0
  239. package/docs/configure/app/source/pre-entry.mdx +14 -0
  240. package/docs/configure/app/source/react-compiler.mdx +72 -0
  241. package/docs/configure/app/source/transform-import.mdx +31 -0
  242. package/docs/configure/app/split-chunks.mdx +17 -0
  243. package/docs/configure/app/tools/autoprefixer.mdx +48 -0
  244. package/docs/configure/app/tools/bundler-chain.mdx +30 -0
  245. package/docs/configure/app/tools/css-extract.mdx +37 -0
  246. package/docs/configure/app/tools/css-loader.mdx +21 -0
  247. package/docs/configure/app/tools/dev-server.mdx +117 -0
  248. package/docs/configure/app/tools/html-plugin.mdx +45 -0
  249. package/docs/configure/app/tools/less.mdx +85 -0
  250. package/docs/configure/app/tools/lightningcss-loader.mdx +39 -0
  251. package/docs/configure/app/tools/minify-css.mdx +57 -0
  252. package/docs/configure/app/tools/postcss.mdx +38 -0
  253. package/docs/configure/app/tools/rspack.mdx +14 -0
  254. package/docs/configure/app/tools/sass.mdx +82 -0
  255. package/docs/configure/app/tools/style-loader.mdx +14 -0
  256. package/docs/configure/app/tools/swc.mdx +69 -0
  257. package/docs/configure/app/tools/ts-checker.mdx +103 -0
  258. package/docs/configure/app/usage.mdx +276 -0
  259. package/docs/guides/_meta.json +37 -0
  260. package/docs/guides/advanced-features/_meta.json +32 -0
  261. package/docs/guides/advanced-features/bff/_meta.json +10 -0
  262. package/docs/guides/advanced-features/bff/cross-project.mdx +110 -0
  263. package/docs/guides/advanced-features/bff/data-platform.mdx +120 -0
  264. package/docs/guides/advanced-features/bff/extend-server.mdx +120 -0
  265. package/docs/guides/advanced-features/bff/frameworks.mdx +131 -0
  266. package/docs/guides/advanced-features/bff/function.mdx +265 -0
  267. package/docs/guides/advanced-features/bff/operators.mdx +629 -0
  268. package/docs/guides/advanced-features/bff/sdk.mdx +116 -0
  269. package/docs/guides/advanced-features/bff/upload.mdx +7 -0
  270. package/docs/guides/advanced-features/bff.mdx +22 -0
  271. package/docs/guides/advanced-features/build-performance.mdx +134 -0
  272. package/docs/guides/advanced-features/compatibility.mdx +81 -0
  273. package/docs/guides/advanced-features/international/_meta.json +10 -0
  274. package/docs/guides/advanced-features/international/advanced.mdx +132 -0
  275. package/docs/guides/advanced-features/international/api.mdx +271 -0
  276. package/docs/guides/advanced-features/international/best-practices.mdx +290 -0
  277. package/docs/guides/advanced-features/international/configuration.mdx +222 -0
  278. package/docs/guides/advanced-features/international/locale-detection.mdx +130 -0
  279. package/docs/guides/advanced-features/international/quick-start.mdx +112 -0
  280. package/docs/guides/advanced-features/international/resource-loading.mdx +158 -0
  281. package/docs/guides/advanced-features/international/routing.mdx +177 -0
  282. package/docs/guides/advanced-features/international.mdx +29 -0
  283. package/docs/guides/advanced-features/low-level.mdx +50 -0
  284. package/docs/guides/advanced-features/page-performance/_meta.json +1 -0
  285. package/docs/guides/advanced-features/page-performance/code-split.mdx +81 -0
  286. package/docs/guides/advanced-features/page-performance/inline-assets.mdx +163 -0
  287. package/docs/guides/advanced-features/page-performance/optimize-bundle.mdx +101 -0
  288. package/docs/guides/advanced-features/page-performance/react-compiler.mdx +51 -0
  289. package/docs/guides/advanced-features/server-monitor/_meta.json +1 -0
  290. package/docs/guides/advanced-features/server-monitor/logger.mdx +19 -0
  291. package/docs/guides/advanced-features/server-monitor/metrics.mdx +41 -0
  292. package/docs/guides/advanced-features/server-monitor/monitors.mdx +242 -0
  293. package/docs/guides/advanced-features/source-build.mdx +168 -0
  294. package/docs/guides/advanced-features/web-server.mdx +296 -0
  295. package/docs/guides/basic-features/_meta.json +49 -0
  296. package/docs/guides/basic-features/alias.mdx +106 -0
  297. package/docs/guides/basic-features/css/_meta.json +1 -0
  298. package/docs/guides/basic-features/css/css-in-js.mdx +69 -0
  299. package/docs/guides/basic-features/css/css-modules.mdx +212 -0
  300. package/docs/guides/basic-features/css/css.mdx +31 -0
  301. package/docs/guides/basic-features/css/tailwindcss.mdx +27 -0
  302. package/docs/guides/basic-features/data/_meta.json +1 -0
  303. package/docs/guides/basic-features/data/data-cache.mdx +515 -0
  304. package/docs/guides/basic-features/data/data-fetch.mdx +419 -0
  305. package/docs/guides/basic-features/data/data-write.mdx +230 -0
  306. package/docs/guides/basic-features/debug/_meta.json +1 -0
  307. package/docs/guides/basic-features/debug/mock.mdx +113 -0
  308. package/docs/guides/basic-features/debug/proxy.mdx +25 -0
  309. package/docs/guides/basic-features/debug/rsdoctor.mdx +47 -0
  310. package/docs/guides/basic-features/debug/using-storybook.mdx +100 -0
  311. package/docs/guides/basic-features/deploy.mdx +448 -0
  312. package/docs/guides/basic-features/env-vars.mdx +181 -0
  313. package/docs/guides/basic-features/html.mdx +259 -0
  314. package/docs/guides/basic-features/output-files.mdx +145 -0
  315. package/docs/guides/basic-features/render/_meta.json +1 -0
  316. package/docs/guides/basic-features/render/before-render.mdx +108 -0
  317. package/docs/guides/basic-features/render/overview.mdx +51 -0
  318. package/docs/guides/basic-features/render/rsc.mdx +533 -0
  319. package/docs/guides/basic-features/render/ssg.mdx +167 -0
  320. package/docs/guides/basic-features/render/ssr-cache.mdx +201 -0
  321. package/docs/guides/basic-features/render/ssr.mdx +323 -0
  322. package/docs/guides/basic-features/render/streaming-ssr.mdx +267 -0
  323. package/docs/guides/basic-features/routes/_meta.json +1 -0
  324. package/docs/guides/basic-features/routes/config-routes.mdx +427 -0
  325. package/docs/guides/basic-features/routes/routes.mdx +532 -0
  326. package/docs/guides/basic-features/static-assets/_meta.json +1 -0
  327. package/docs/guides/basic-features/static-assets/json-files.mdx +124 -0
  328. package/docs/guides/basic-features/static-assets/svg-assets.mdx +172 -0
  329. package/docs/guides/basic-features/static-assets/wasm-assets.mdx +66 -0
  330. package/docs/guides/basic-features/static-assets.mdx +164 -0
  331. package/docs/guides/basic-features/testing/_meta.json +1 -0
  332. package/docs/guides/basic-features/testing/playwright.mdx +111 -0
  333. package/docs/guides/basic-features/testing/rstest.mdx +192 -0
  334. package/docs/guides/concept/_meta.json +1 -0
  335. package/docs/guides/concept/builder.mdx +60 -0
  336. package/docs/guides/concept/entries.mdx +325 -0
  337. package/docs/guides/concept/server.mdx +35 -0
  338. package/docs/guides/get-started/_meta.json +9 -0
  339. package/docs/guides/get-started/ai-coding-agents.mdx +63 -0
  340. package/docs/guides/get-started/glossary.mdx +63 -0
  341. package/docs/guides/get-started/introduction.mdx +45 -0
  342. package/docs/guides/get-started/quick-start.mdx +92 -0
  343. package/docs/guides/get-started/tech-stack.mdx +97 -0
  344. package/docs/guides/get-started/ultramodern.mdx +433 -0
  345. package/docs/guides/get-started/upgrade.mdx +114 -0
  346. package/docs/guides/topic-detail/_meta.json +8 -0
  347. package/docs/guides/topic-detail/module-federation/_meta.json +1 -0
  348. package/docs/guides/topic-detail/module-federation/application.mdx +116 -0
  349. package/docs/guides/topic-detail/module-federation/deploy.mdx +104 -0
  350. package/docs/guides/topic-detail/module-federation/i18n.mdx +670 -0
  351. package/docs/guides/topic-detail/module-federation/introduce.mdx +36 -0
  352. package/docs/guides/topic-detail/module-federation/ssr.mdx +177 -0
  353. package/docs/guides/topic-detail/module-federation/usage.mdx +202 -0
  354. package/docs/guides/troubleshooting/_meta.json +1 -0
  355. package/docs/guides/troubleshooting/builder.mdx +114 -0
  356. package/docs/guides/troubleshooting/cli.mdx +39 -0
  357. package/docs/guides/troubleshooting/dependencies.mdx +123 -0
  358. package/docs/guides/troubleshooting/hmr.mdx +148 -0
  359. package/docs/guides/upgrade/_meta.json +1 -0
  360. package/docs/guides/upgrade/config.mdx +951 -0
  361. package/docs/guides/upgrade/entry.mdx +463 -0
  362. package/docs/guides/upgrade/other.mdx +183 -0
  363. package/docs/guides/upgrade/overview.mdx +33 -0
  364. package/docs/guides/upgrade/tailwindcss.mdx +92 -0
  365. package/docs/guides/upgrade/web-server.md +109 -0
  366. package/docs/index.md +4 -0
  367. package/package.json +43 -20
  368. package/scripts/copy-main-doc.mjs +50 -0
@@ -0,0 +1,97 @@
1
+ ### BFF Function
2
+
3
+ First, create the `api/lambda/upload.ts` file:
4
+
5
+ ```ts title="api/lambda/upload.ts"
6
+ export const post = async ({ formData }: { formData: Record<string, any> }) => {
7
+ console.info('formData:', formData);
8
+ // do somethings
9
+ return {
10
+ data: {
11
+ code: 0,
12
+ },
13
+ };
14
+ };
15
+ ```
16
+
17
+ :::tip
18
+ The `formData` parameter in the interface processing function can access files uploaded from the client side. It is an `Object` where the keys correspond to the field names used during the upload.
19
+ :::
20
+
21
+ ### Integrated Calling
22
+
23
+ Next, directly import and call the function in `src/routes/upload/page.tsx`:
24
+
25
+ ```tsx title="routes/upload/page.tsx"
26
+ import { post } from '@api/upload';
27
+ import React, { type JSX } from 'react';
28
+
29
+ export default (): JSX.Element => {
30
+ const [file, setFile] = React.useState<FileList | null>();
31
+
32
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
33
+ setFile(e.target.files);
34
+ };
35
+
36
+ const handleSubmit = async (e: React.MouseEvent<HTMLButtonElement>) => {
37
+ e.preventDefault();
38
+ const formData = new FormData();
39
+ if (file) {
40
+ for (let i = 0; i < file.length; i++) {
41
+ formData.append('images', file[i]);
42
+ }
43
+ post({
44
+ formData,
45
+ });
46
+ }
47
+ };
48
+
49
+ return (
50
+ <div>
51
+ <input multiple type="file" onChange={handleChange} />
52
+ <button onClick={handleSubmit}>upload</button>
53
+ </div>
54
+ );
55
+ };
56
+ ```
57
+
58
+ :::tip
59
+ Note: The input parameter type must be `{ formData: FormData }` for the upload to succeed.
60
+ :::
61
+
62
+ ### Manual Calling
63
+
64
+ You can manually upload files using the `fetch API`, when calling `fetch`, set the `body` as `FormData` type and submit a post request.
65
+
66
+ ```tsx title="routes/upload/page.tsx"
67
+ import React from 'react';
68
+
69
+ export default (): JSX.Element => {
70
+ const [file, setFile] = React.useState<FileList | null>();
71
+
72
+ const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
73
+ setFile(e.target.files);
74
+ };
75
+
76
+ const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {
77
+ e.preventDefault();
78
+ const formData = new FormData();
79
+ if (file) {
80
+ for (let i = 0; i < file.length; i++) {
81
+ formData.append('images', file[i]);
82
+ }
83
+ await fetch('/api/upload', {
84
+ method: 'POST',
85
+ body: formData,
86
+ });
87
+ }
88
+ };
89
+
90
+ return (
91
+ <form onSubmit={handleSubmit}>
92
+ <input multiple type="file" onChange={handleChange} />
93
+ <button type="submit">upload</button>
94
+ </form>
95
+ );
96
+ };
97
+ ```
@@ -0,0 +1,45 @@
1
+ To build the production artifacts of the project, run `pnpm run build` in the project:
2
+
3
+ ```bash
4
+ $ pnpm run build
5
+
6
+ > modern build
7
+
8
+ Modern.js Framework
9
+
10
+ info Starting production build...
11
+ info Type checker is enabled. It may take some time.
12
+ ready Client compiled in 6.19 s
13
+ info Production file sizes:
14
+
15
+ File Size Gzipped
16
+ dist/routes-manifest.json 0.74 kB 0.28 kB
17
+ dist/static/css/async/page.d7915515.css 1.4 kB 0.69 kB
18
+ dist/static/js/main.5ae469e7.js 3.0 kB 1.3 kB
19
+ dist/html/index/index.html 6.0 kB 2.6 kB
20
+ dist/static/js/async/page.ddc8a4c1.js 19.2 kB 6.7 kB
21
+ dist/static/js/34.171fffdb.js 21.3 kB 7.1 kB
22
+ dist/static/js/lib-router.8995a55e.js 55.3 kB 18.1 kB
23
+ dist/static/js/lib-lodash.53ec3384.js 71.4 kB 24.8 kB
24
+ dist/static/js/lib-react.b5856db9.js 140.0 kB 45.2 kB
25
+ dist/static/js/lib-polyfill.86c452b3.js 213.3 kB 69.9 kB
26
+
27
+ Total size: 531.8 kB
28
+ Gzipped size: 176.7 kB
29
+ ```
30
+
31
+ By default, the build artifacts are generated in `dist/`, with the following directory structure:
32
+
33
+ ```
34
+ dist
35
+ ├── html
36
+ │ └── index
37
+ ├── modern.config.json
38
+ ├── route.json
39
+ ├── routes-manifest.json
40
+ └── static
41
+ ├── css
42
+ └── js
43
+ ```
44
+
45
+ > If you need to customize the directory of the build artifacts, please refer to [Output files](/guides/basic-features/output-files).
@@ -0,0 +1,3 @@
1
+ Refers to module bundlers such as [Rspack](https://rspack.rs/).
2
+
3
+ The main goal of bundlers is to bundle JavaScript, CSS and other files together, and the bundled files can be used in the browser, Node.js or other environments. When bundler processes the Web application, it builds a dependency graph and then combines every module into one or more bundles.
@@ -0,0 +1,15 @@
1
+ Run `pnpm run dev` in the project to start the project:
2
+
3
+ ```bash
4
+ $ pnpm run dev
5
+ > modern dev
6
+
7
+ Modern.js Framework
8
+
9
+ ready Client compiled in 0.86 s
10
+
11
+ > Local: http://localhost:8080/
12
+ > Network: http://192.168.0.1:8080/
13
+ ```
14
+
15
+ Open `http://localhost:8080/` in your browser to see the page content.
@@ -0,0 +1,7 @@
1
+
2
+ ```yaml title=".browserslistrc"
3
+ chrome >= 87
4
+ edge >= 88
5
+ firefox >= 78
6
+ safari >= 14
7
+ ```
@@ -0,0 +1,14 @@
1
+ ## modern deploy
2
+
3
+ The `modern deploy` command is used to generate artifacts required for the deployment platform.
4
+
5
+ ```bash
6
+ Usage: modern deploy [options]
7
+
8
+ Options:
9
+ -c --config <config> Specify configuration file path, either relative or absolute
10
+ -s --skip-build Skip the build stage
11
+ -h, --help Display command help
12
+ ```
13
+
14
+ For more details, refer to [Deploy Application](/guides/basic-features/deploy).
@@ -0,0 +1 @@
1
+ After local develop, you can refer to the [Deployment](/guides/basic-features/deploy.html) section to deploy the project to the server.
@@ -0,0 +1,3 @@
1
+ :::tip
2
+ Please refer to the [Enable BFF](/en/guides/advanced-features/bff/function.html#enable-bff) section in Basic Usage to enable BFF functionality first.
3
+ :::
@@ -0,0 +1,56 @@
1
+ To enable BFF functionality in a Modern.js project, follow these steps to modify the code:
2
+
3
+ 1. Install BFF plugin dependencies
4
+
5
+ If the BFF plugin is not yet installed in your project, install it first:
6
+
7
+ ```bash
8
+ pnpm add @modern-js/plugin-bff
9
+ ```
10
+
11
+ :::tip Version Consistency
12
+ Make sure the version of `@modern-js/plugin-bff` matches the version of `@modern-js/app-tools` in your project. All Modern.js official packages are released with a uniform version number, and version mismatches may cause compatibility issues.
13
+
14
+ Check the version of `@modern-js/app-tools` first, then install the same version of `@modern-js/plugin-bff`:
15
+
16
+ ```bash
17
+ # Check the current version of @modern-js/app-tools
18
+ pnpm list @modern-js/app-tools
19
+
20
+ # Install the same version of @modern-js/plugin-bff
21
+ pnpm add @modern-js/plugin-bff@<version>
22
+ ```
23
+
24
+ :::
25
+
26
+ 2. Configure `modern.config.ts`
27
+
28
+ Import and add the BFF plugin in the `modern.config.ts` file:
29
+
30
+ ```ts title="modern.config.ts"
31
+ import { defineConfig, appTools } from '@modern-js/app-tools';
32
+ import { bffPlugin } from '@modern-js/plugin-bff';
33
+
34
+ export default defineConfig({
35
+ plugins: [appTools(), bffPlugin()],
36
+ });
37
+ ```
38
+
39
+ 3. Configure TypeScript alias
40
+
41
+ To correctly recognize the `@api` alias in TypeScript, it is recommended to add path mapping in `tsconfig.json`:
42
+
43
+ ```json title="tsconfig.json"
44
+ {
45
+ "compilerOptions": {
46
+ "paths": {
47
+ ..., // other paths,
48
+ "@api/*": ["./api/lambda/*"]
49
+ }
50
+ },
51
+ "include": [
52
+ ..., // other include directories
53
+ "api" // Add api directory
54
+ ]
55
+ }
56
+ ```
@@ -0,0 +1,49 @@
1
+ To enable SSG functionality in a Modern.js project, follow these steps to modify the code:
2
+
3
+ 1. Install SSG plugin dependencies
4
+
5
+ If the SSG plugin is not yet installed in your project, install it first:
6
+
7
+ ```bash
8
+ pnpm add @modern-js/plugin-ssg
9
+ ```
10
+
11
+ :::tip Version Consistency
12
+
13
+ Make sure the version of `@modern-js/plugin-ssg` matches the version of `@modern-js/app-tools` in your project. All Modern.js official packages are released with a uniform version number, and version mismatches may cause compatibility issues.
14
+
15
+ Check the version of `@modern-js/app-tools` first, then install the same version of `@modern-js/plugin-ssg`:
16
+
17
+ ```bash
18
+ # Check the current version of @modern-js/app-tools
19
+ pnpm list @modern-js/app-tools
20
+
21
+ # Install the same version of @modern-js/plugin-ssg
22
+ pnpm add @modern-js/plugin-ssg@<version>
23
+ ```
24
+
25
+ :::
26
+
27
+ 2. Configure modern.config.ts
28
+
29
+ Import and add the SSG plugin in the `modern.config.ts` file, and configure `output.ssg`:
30
+
31
+ ```ts title="modern.config.ts"
32
+ import { defineConfig, appTools } from '@modern-js/app-tools';
33
+ import { ssgPlugin } from '@modern-js/plugin-ssg';
34
+
35
+ export default defineConfig({
36
+ plugins: [appTools(), ssgPlugin()],
37
+ output: {
38
+ ssg: true,
39
+ },
40
+ });
41
+ ```
42
+
43
+ :::info Scope of Application
44
+
45
+ - Use `output.ssg` for single-entry apps.
46
+ - Use `output.ssgByEntries` for multi-entry apps.
47
+ - When only `output.ssg: true` is set and `output.ssgByEntries` is not configured, all routes under all entries will be treated as SSG routes.
48
+
49
+ :::
File without changes
@@ -0,0 +1,7 @@
1
+ :::tip Entry scanning logic
2
+ - If `src/` itself meets entry criteria → Single-entry application
3
+ - If `src/` does not meet criteria → Scan subdirectories under `src/` → Multi-entry application
4
+ - In single-entry applications, the default entry name is `index`
5
+
6
+ :::
7
+
@@ -0,0 +1,3 @@
1
+ The standard BFF function writing method may not always meet your needs. For example, complex TS type requirements in business scenarios. Modern.js provides a more powerful BFF function writing method.
2
+
3
+ For more details, please refer to - [Creating Extensible BFF Functions](/guides/advanced-features/bff/operators).
@@ -0,0 +1,120 @@
1
+ ### Getting Request Context
2
+
3
+ Sometimes in BFF functions, it's necessary to obtain the request context to handle more logic. In such cases, you can use `useHonoContext` to get it:
4
+
5
+ ```ts title="api/lambda/hello.ts"
6
+ import { useHonoContext } from '@modern-js/server-runtime';
7
+
8
+ export const get = async () => {
9
+ const c = useHonoContext();
10
+ console.info(`access url: ${c.req.url}`);
11
+ return 'Hello Modern.js';
12
+ };
13
+ ```
14
+
15
+ :::info
16
+ For more details, refer to [useHonoContext](/apis/app/runtime/bff/use-backend-context).
17
+ :::
18
+
19
+ ### Getting Cookies
20
+
21
+ When getting cookies in BFF functions, you need to get the request context through `useHonoContext`, then use `c.req.header('cookie')` to get the Cookie string and parse it manually:
22
+
23
+ ```ts title="api/lambda/cookies.ts"
24
+ import { Api, Get } from '@modern-js/plugin-bff/hono-server';
25
+ import { useHonoContext } from '@modern-js/server-runtime';
26
+
27
+ // Helper function to parse Cookie string
28
+ function parseCookies(
29
+ cookieHeader: string | undefined,
30
+ ): Record<string, string> {
31
+ const cookies: Record<string, string> = {};
32
+ if (!cookieHeader) return cookies;
33
+
34
+ cookieHeader.split(';').forEach(cookie => {
35
+ const [name, ...rest] = cookie.trim().split('=');
36
+ if (name) {
37
+ cookies[name] = rest.join('=');
38
+ }
39
+ });
40
+
41
+ return cookies;
42
+ }
43
+
44
+ export const getCookies = Api(Get('/cookies'), async () => {
45
+ const c = useHonoContext();
46
+ const cookieHeader = c.req.header('cookie');
47
+ const cookies = parseCookies(cookieHeader);
48
+ const token = cookies.token;
49
+ const sessionId = cookies.sessionId;
50
+ return {
51
+ hasToken: !!token,
52
+ token: token || null,
53
+ sessionId: sessionId || null,
54
+ };
55
+ });
56
+ ```
57
+
58
+ :::caution Note
59
+ The `c.req.cookie()` method does not exist in the current version. You need to use `c.req.header('cookie')` to get the Cookie string and parse it manually.
60
+ :::
61
+
62
+ ### Defining BFF Functions
63
+
64
+ When using Hono as the runtime framework, you can define interfaces through [Api functions](/guides/advanced-features/bff/operators.html):
65
+
66
+ ```ts title="api/lambda/user.ts"
67
+ import { Api, Get, Query } from '@modern-js/plugin-bff/hono-server';
68
+ import { z } from 'zod';
69
+
70
+ const QuerySchema = z.object({
71
+ id: z.string(),
72
+ });
73
+
74
+ export const getUser = Api(
75
+ Get('/user'),
76
+ Query(QuerySchema),
77
+ async ({ query }) => {
78
+ return {
79
+ id: query.id,
80
+ name: 'Modern.js',
81
+ email: 'modernjs@bytedance.com',
82
+ };
83
+ },
84
+ );
85
+ ```
86
+
87
+ :::info
88
+ For more details about Api functions and operators, refer to [Creating Extensible BFF Functions](/guides/advanced-features/bff/operators.html).
89
+ :::
90
+
91
+ ### Using Middleware
92
+
93
+ Hono supports a rich middleware ecosystem, and you can use middleware in BFF functions:
94
+
95
+ ```ts title="api/lambda/user.ts"
96
+ import { Api, Get, Middleware } from '@modern-js/plugin-bff/hono-server';
97
+
98
+ export const getUser = Api(
99
+ Get('/user'),
100
+ Middleware(async (c, next) => {
101
+ // You can access Hono's Context in middleware
102
+ c.res.headers.set('X-Powered-By', 'Modern.js');
103
+ await next();
104
+ }),
105
+ async () => {
106
+ return {
107
+ name: 'Modern.js',
108
+ email: 'modernjs@bytedance.com',
109
+ };
110
+ },
111
+ );
112
+ ```
113
+
114
+ :::info
115
+ For more details about middleware, refer to [Creating Extensible BFF Functions](/guides/advanced-features/bff/operators.html#middleware).
116
+ :::
117
+
118
+ ### More Hono Documentation
119
+
120
+ For more detailed information about Hono, please refer to the [Hono official documentation](https://hono.dev/).
@@ -0,0 +1,93 @@
1
+ UltraModern.js provides the BleedingDev create package to create SuperApp
2
+ workspaces. It does not require global installation and can be run on-demand
3
+ using `pnpm dlx`.
4
+
5
+ The supported pnpm command is the scoped package specifier:
6
+ `pnpm dlx @bleedingdev/modern-js-create <target>`. Do not shorten it to
7
+ `pnpm dlx modern-js-create`; there is no unscoped package by that name.
8
+
9
+ You can initialize the empty directory you are already in:
10
+
11
+ ```bash
12
+ mkdir myapp && cd myapp
13
+ pnpm dlx @bleedingdev/modern-js-create .
14
+ ```
15
+
16
+ You can also create a project directly in a new directory:
17
+
18
+ ```bash
19
+ pnpm dlx @bleedingdev/modern-js-create my-super-app
20
+ ```
21
+
22
+ To initialize with workspace protocol dependencies (for local monorepo testing of unreleased Modern.js packages):
23
+
24
+ ```bash
25
+ pnpm dlx @bleedingdev/modern-js-create my-super-app --workspace
26
+ ```
27
+
28
+ The BleedingDev create package will directly create the application without providing an interactive Q & A interface:
29
+
30
+ ```bash
31
+ 🚀 Welcome to UltraModern.js
32
+
33
+ 📦 Creating project "my-super-app"...
34
+
35
+ ✨ Project created successfully! 🎉
36
+
37
+ 📋 Next, you can run the following commands:
38
+
39
+ 📁 Enter the project directory:
40
+
41
+ cd my-super-app
42
+
43
+ 🔧 Initialize Git repository:
44
+
45
+ git init
46
+
47
+ 📥 Install project dependencies:
48
+
49
+ pnpm install
50
+
51
+ ⚡ Start the development server:
52
+
53
+ pnpm start
54
+ ```
55
+
56
+ Now, the project structure is as follows:
57
+
58
+ ```
59
+ .
60
+ ├── apps
61
+ │ └── shell-super-app
62
+ ├── package.json
63
+ ├── packages
64
+ │ ├── shared-contracts
65
+ │ ├── shared-design-tokens
66
+ │ └── shared-effect-client
67
+ ├── scripts
68
+ ├── topology
69
+ └── verticals
70
+ ```
71
+
72
+ The default workspace starts shell-only and installs the published BleedingDev
73
+ package aliases:
74
+
75
+ ```bash
76
+ pnpm dlx @bleedingdev/modern-js-create my-super-app
77
+ ```
78
+
79
+ From a generated SuperApp workspace, add a business MicroVertical in place:
80
+
81
+ ```bash
82
+ pnpm dlx @bleedingdev/modern-js-create transportation --vertical
83
+ ```
84
+
85
+ The `--vertical` command mutates the current workspace: it adds the vertical
86
+ package and wires topology, ownership metadata, shell Module Federation,
87
+ development overlays, package dependencies, generated contracts, route-owned
88
+ i18n, CSS isolation, and the Effect BFF/client surface.
89
+
90
+ The lower-level `--ultramodern-package-*` flags are reserved for release
91
+ engineering and local package-source testing. BleedingDev packages are published
92
+ through GitHub Actions trusted publishing; do not publish them manually from a
93
+ developer machine.
@@ -0,0 +1,5 @@
1
+ ```bash
2
+ $ pnpm dlx @bleedingdev/modern-js-create myapp
3
+ ? Please select the programming language: TS
4
+ ? Please select the package manager: pnpm
5
+ ```
@@ -0,0 +1,25 @@
1
+ In Modern.js, log events are handled by `LoggerMonitor`, which outputs logs to the console.
2
+
3
+ :::info
4
+ The built-in `LoggerMonitor` depends on the [rslog](https://www.npmjs.com/package/rslog) library.
5
+ :::
6
+
7
+ For example, intentionally throwing an error in the project:
8
+
9
+ ```tsx title=routes/page.tsx
10
+ import './index.css';
11
+
12
+ const Index = () => <div className="container-box">{a}</div>;
13
+
14
+ export default Index;
15
+ ```
16
+
17
+ If running normally, you can see the following output in the console:
18
+
19
+ ```shell
20
+ > Local: http://localhost:8080/
21
+ > press h + enter to show shortcuts
22
+
23
+ error SSR Error - App Prerender, error = ReferenceError: a is not defined
24
+ at Index (/somepath/page.tsx:3:1)
25
+ ```
@@ -0,0 +1,20 @@
1
+ In Modern.js, metric events are also handled by `LoggerMonitor`, which outputs metrics to the console in a specific format.
2
+
3
+ :::info
4
+ The built-in `LoggerMonitor` depends on the [rslog](https://www.npmjs.com/package/rslog) library.
5
+ :::
6
+
7
+ The `rslog` instance initialized in Modern.js outputs logs at `debug` level and above in development environment by default, and outputs all logs in production environment. In the built-in `LoggerMonitor`, all metric events are output as Debug logs. Therefore, if you want to view metric event information in the development environment, you need to add additional environment variables.
8
+
9
+ Developers can add the environment variable `DEBUG=true` when running the `dev` command. If running normally, after accessing, you can see the following output in the console:
10
+
11
+ ```shell
12
+ > Local: http://localhost:8080/
13
+ > press h + enter to show shortcuts
14
+
15
+ debug SSR Debug - server-loader, cost: 2.000094, req.url = /
16
+ debug SSR Debug - ssr-prerender, cost: 6.99997, req.url = /
17
+ debug SSR Debug - ssr-render-html, cost: 0.999927, req.url = /
18
+ debug Debug - server-handle-request, cost: 19.999981, req.url = /
19
+ debug --> GET / 200 90ms
20
+ ```
@@ -0,0 +1,16 @@
1
+ ```ts
2
+ import { defineRuntimeConfig } from '@modern-js/runtime';
3
+ import i18next from 'i18next';
4
+
5
+ // Create custom instance
6
+ const customI18n = i18next.createInstance({
7
+ // Custom configuration
8
+ });
9
+
10
+ export default defineRuntimeConfig({
11
+ i18n: {
12
+ i18nInstance: customI18n,
13
+ },
14
+ });
15
+ ```
16
+
@@ -0,0 +1 @@
1
+ All [i18next initialization options](https://www.i18next.com/overview/configuration-options) are supported. Common options are described below:
@@ -0,0 +1,10 @@
1
+ `i18next` and `react-i18next` are **Peer Dependencies** and must be installed manually.
2
+
3
+ :::note Version consistency
4
+ `@modern-js/plugin-i18n` should use the same version as `@modern-js/app-tools` in your project.
5
+ :::
6
+
7
+ ```bash
8
+ pnpm list @modern-js/app-tools
9
+ pnpm add @modern-js/plugin-i18n@<version> i18next react-i18next
10
+ ```
@@ -0,0 +1,16 @@
1
+ Create `src/modern.runtime.ts`:
2
+
3
+ ```ts
4
+ import { defineRuntimeConfig } from '@modern-js/runtime';
5
+ import i18next from 'i18next';
6
+
7
+ // i18next exports a global singleton by default, which can cause multiple apps to affect each other.
8
+ // createInstance() creates an isolated instance so each app has independent language state.
9
+ const i18nInstance = i18next.createInstance();
10
+
11
+ export default defineRuntimeConfig({
12
+ i18n: {
13
+ i18nInstance,
14
+ },
15
+ });
16
+ ```
@@ -0,0 +1,5 @@
1
+ `@modern-js/plugin-i18n` is the internationalization plugin for Modern.js, built on [i18next](https://www.i18next.com/) and [react-i18next](https://react.i18next.com/).
2
+
3
+ - **The plugin itself**: Integrates with the Modern.js framework, including SSR language passing, route prefix handling, and more.
4
+ - **i18next**: Provides core translation capabilities, such as the `t()` function, interpolation, plurals, and namespaces.
5
+ - **react-i18next**: Provides React components and Hooks, such as `useTranslation`, to integrate translations with the React lifecycle.
@@ -0,0 +1,9 @@
1
+ ### language
2
+
3
+ Question: Please select the programming language.
4
+
5
+ Options:
6
+
7
+ - TS -- ts
8
+
9
+ - ES6+ -- js
@@ -0,0 +1,6 @@
1
+ Micro-frontend (MFE) is an architecture style similar to microservices. It is a composition of multiple independently delivered frontend applications, forming a cohesive whole. MFE decomposes frontend applications into smaller, simpler applications that can be developed, tested, and deployed independently while still appearing as a cohesive single product to users.
2
+
3
+ It primarily addresses two problems:
4
+
5
+ - Difficulty in maintaining large and complex applications as they evolve over time.
6
+ - Inefficiency caused by cross-team or cross-department collaboration in project development.