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

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 (334) hide show
  1. package/bin/modern-bundle-docs.js +7 -0
  2. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -1
  3. package/dist/cjs/builder/generator/getBuilderEnvironments.js +80 -11
  4. package/dist/cjs/bundleDocs.js +114 -0
  5. package/dist/cjs/commands/build.js +2 -1
  6. package/dist/cjs/commands/deploy.js +4 -2
  7. package/dist/cjs/commands/index.js +0 -4
  8. package/dist/cjs/config/default.js +2 -0
  9. package/dist/cjs/index.js +56 -15
  10. package/dist/cjs/plugins/analyze/index.js +2 -2
  11. package/dist/cjs/plugins/analyze/utils.js +3 -2
  12. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/index.js +1 -1
  13. package/dist/cjs/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.js +94 -18
  14. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
  15. package/dist/cjs/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  16. package/dist/cjs/plugins/initialize/index.js +4 -3
  17. package/dist/cjs/plugins/serverBuild.js +3 -2
  18. package/dist/cjs/ultramodern-release-envelope/framework-output.js +109 -57
  19. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +5 -1
  20. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +70 -10
  21. package/dist/esm/bundleDocs.mjs +62 -0
  22. package/dist/esm/commands/build.mjs +2 -1
  23. package/dist/esm/commands/deploy.mjs +4 -2
  24. package/dist/esm/commands/index.mjs +0 -4
  25. package/dist/esm/config/default.mjs +2 -0
  26. package/dist/esm/index.mjs +15 -1
  27. package/dist/esm/plugins/analyze/index.mjs +2 -2
  28. package/dist/esm/plugins/analyze/utils.mjs +3 -2
  29. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -1
  30. package/dist/esm/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +93 -18
  31. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
  32. package/dist/esm/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  33. package/dist/esm/plugins/initialize/index.mjs +4 -3
  34. package/dist/esm/plugins/serverBuild.mjs +3 -2
  35. package/dist/esm/ultramodern-release-envelope/framework-output.mjs +107 -58
  36. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +5 -1
  37. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +70 -10
  38. package/dist/esm-node/bundleDocs.mjs +63 -0
  39. package/dist/esm-node/commands/build.mjs +2 -1
  40. package/dist/esm-node/commands/deploy.mjs +4 -2
  41. package/dist/esm-node/commands/index.mjs +0 -4
  42. package/dist/esm-node/config/default.mjs +2 -0
  43. package/dist/esm-node/index.mjs +15 -1
  44. package/dist/esm-node/plugins/analyze/index.mjs +2 -2
  45. package/dist/esm-node/plugins/analyze/utils.mjs +3 -2
  46. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/index.mjs +1 -1
  47. package/dist/esm-node/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.mjs +93 -18
  48. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.mjs +1 -0
  49. package/dist/esm-node/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.mjs +14 -0
  50. package/dist/esm-node/plugins/initialize/index.mjs +4 -3
  51. package/dist/esm-node/plugins/serverBuild.mjs +3 -2
  52. package/dist/esm-node/ultramodern-release-envelope/framework-output.mjs +107 -58
  53. package/dist/types/builder/generator/getBuilderEnvironments.d.ts +29 -0
  54. package/dist/types/bundleDocs.d.ts +20 -0
  55. package/dist/types/commands/deploy.d.ts +2 -1
  56. package/dist/types/index.d.ts +4 -1
  57. package/dist/types/plugins/analyze/utils.d.ts +1 -1
  58. package/dist/types/plugins/deploy/platforms/cloudflare-output-verifier/worker-bundles.d.ts +1 -1
  59. package/dist/types/plugins/deploy/platforms/templates/cloudflare-entry.001-bootstrap-security.d.mts +1 -1
  60. package/dist/types/plugins/deploy/platforms/templates/cloudflare-worker-mf-ssr-runtime-plugin.d.mts +13 -0
  61. package/dist/types/types/config/dev.d.ts +6 -0
  62. package/dist/types/ultramodern-release-envelope/framework-output.d.ts +1 -0
  63. package/docs/apis/app/commands.md +231 -0
  64. package/docs/apis/app/hooks/api/lambda.md +9 -0
  65. package/docs/apis/app/hooks/config/favicon.md +24 -0
  66. package/docs/apis/app/hooks/config/html.md +5 -0
  67. package/docs/apis/app/hooks/config/icon.md +24 -0
  68. package/docs/apis/app/hooks/config/mock.md +6 -0
  69. package/docs/apis/app/hooks/config/public.md +26 -0
  70. package/docs/apis/app/hooks/config/upload.md +50 -0
  71. package/docs/apis/app/hooks/modern-config.md +5 -0
  72. package/docs/apis/app/hooks/server/server.md +5 -0
  73. package/docs/apis/app/hooks/shared.md +3 -0
  74. package/docs/apis/app/hooks/src/app.md +30 -0
  75. package/docs/apis/app/hooks/src/entry.md +34 -0
  76. package/docs/apis/app/hooks/src/entry.server.md +51 -0
  77. package/docs/apis/app/hooks/src/modern.runtime.md +5 -0
  78. package/docs/apis/app/hooks/src/routes.md +86 -0
  79. package/docs/apis/app/hooks/src/server.md +3 -0
  80. package/docs/apis/app/runtime/bff/use-backend-context.md +27 -0
  81. package/docs/apis/app/runtime/core/create-root.md +19 -0
  82. package/docs/apis/app/runtime/core/render.md +39 -0
  83. package/docs/apis/app/runtime/core/runtime-context.md +156 -0
  84. package/docs/apis/app/runtime/router/router.md +283 -0
  85. package/docs/apis/app/runtime/ssr/no-ssr.md +35 -0
  86. package/docs/apis/app/runtime/ssr/renderStreaming.md +67 -0
  87. package/docs/apis/app/runtime/ssr/renderString.md +60 -0
  88. package/docs/apis/app/runtime/ssr/requestHandler.md +44 -0
  89. package/docs/apis/app/runtime/utility/css-in-js.md +40 -0
  90. package/docs/apis/app/runtime/utility/head.md +35 -0
  91. package/docs/apis/app/runtime/utility/loadable.md +82 -0
  92. package/docs/community/blog/2022-0708-updates.md +91 -0
  93. package/docs/community/blog/2022-0910-updates.md +76 -0
  94. package/docs/community/blog/overview.md +63 -0
  95. package/docs/community/blog/v2-release-note.md +238 -0
  96. package/docs/community/blog/v3-release-note.md +622 -0
  97. package/docs/community/contributing-guide.md +252 -0
  98. package/docs/community/releases.md +23 -0
  99. package/docs/community/showcase.md +24 -0
  100. package/docs/community/team.md +14 -0
  101. package/docs/configure/app/bff/cross-project.md +20 -0
  102. package/docs/configure/app/bff/effect.md +313 -0
  103. package/docs/configure/app/bff/prefix.md +29 -0
  104. package/docs/configure/app/bff/runtime-framework.md +26 -0
  105. package/docs/configure/app/builder-plugins.md +66 -0
  106. package/docs/configure/app/dev/asset-prefix.md +13 -0
  107. package/docs/configure/app/dev/before-start-url.md +17 -0
  108. package/docs/configure/app/dev/client.md +41 -0
  109. package/docs/configure/app/dev/hmr.md +10 -0
  110. package/docs/configure/app/dev/host.md +18 -0
  111. package/docs/configure/app/dev/https.md +77 -0
  112. package/docs/configure/app/dev/lazy-compilation.md +39 -0
  113. package/docs/configure/app/dev/live-reload.md +10 -0
  114. package/docs/configure/app/dev/mock-dir.md +31 -0
  115. package/docs/configure/app/dev/progress-bar.md +19 -0
  116. package/docs/configure/app/dev/server.md +124 -0
  117. package/docs/configure/app/dev/setup-middlewares.md +32 -0
  118. package/docs/configure/app/dev/start-url.md +48 -0
  119. package/docs/configure/app/dev/watch-files.md +27 -0
  120. package/docs/configure/app/dev/write-to-disk.md +10 -0
  121. package/docs/configure/app/experiments/source-build.md +31 -0
  122. package/docs/configure/app/html/app-icon.md +28 -0
  123. package/docs/configure/app/html/crossorigin.md +10 -0
  124. package/docs/configure/app/html/favicon.md +16 -0
  125. package/docs/configure/app/html/inject.md +10 -0
  126. package/docs/configure/app/html/meta.md +24 -0
  127. package/docs/configure/app/html/mount-id.md +10 -0
  128. package/docs/configure/app/html/output-structure.md +10 -0
  129. package/docs/configure/app/html/script-loading.md +10 -0
  130. package/docs/configure/app/html/tags.md +15 -0
  131. package/docs/configure/app/html/template-parameters.md +33 -0
  132. package/docs/configure/app/html/template.md +10 -0
  133. package/docs/configure/app/html/title.md +18 -0
  134. package/docs/configure/app/output/asset-prefix.md +11 -0
  135. package/docs/configure/app/output/assets-retry.md +77 -0
  136. package/docs/configure/app/output/charset.md +10 -0
  137. package/docs/configure/app/output/clean-dist-path.md +16 -0
  138. package/docs/configure/app/output/convert-to-rem.md +79 -0
  139. package/docs/configure/app/output/copy.md +10 -0
  140. package/docs/configure/app/output/css-modules.md +48 -0
  141. package/docs/configure/app/output/data-uri-limit.md +26 -0
  142. package/docs/configure/app/output/disable-css-module-extension.md +55 -0
  143. package/docs/configure/app/output/disable-inline-runtime-chunk.md +41 -0
  144. package/docs/configure/app/output/disable-svgr.md +18 -0
  145. package/docs/configure/app/output/disable-ts-checker.md +49 -0
  146. package/docs/configure/app/output/dist-path.md +43 -0
  147. package/docs/configure/app/output/enable-asset-manifest.md +36 -0
  148. package/docs/configure/app/output/enable-css-module-tsdeclaration.md +28 -0
  149. package/docs/configure/app/output/enable-inline-route-manifests.md +16 -0
  150. package/docs/configure/app/output/externals.md +20 -0
  151. package/docs/configure/app/output/filename-hash.md +10 -0
  152. package/docs/configure/app/output/filename.md +55 -0
  153. package/docs/configure/app/output/inject-styles.md +10 -0
  154. package/docs/configure/app/output/inline-scripts.md +29 -0
  155. package/docs/configure/app/output/inline-styles.md +29 -0
  156. package/docs/configure/app/output/legal-comments.md +18 -0
  157. package/docs/configure/app/output/minify.md +22 -0
  158. package/docs/configure/app/output/override-browserslist.md +22 -0
  159. package/docs/configure/app/output/polyfill.md +12 -0
  160. package/docs/configure/app/output/source-map.md +30 -0
  161. package/docs/configure/app/output/split-route-chunks.md +16 -0
  162. package/docs/configure/app/output/ssg.md +81 -0
  163. package/docs/configure/app/output/ssgByEntries.md +90 -0
  164. package/docs/configure/app/output/svg-default-export.md +30 -0
  165. package/docs/configure/app/output/temp-dir.md +20 -0
  166. package/docs/configure/app/performance/build-cache.md +44 -0
  167. package/docs/configure/app/performance/chunk-split.md +40 -0
  168. package/docs/configure/app/performance/dns-prefetch.md +15 -0
  169. package/docs/configure/app/performance/preconnect.md +16 -0
  170. package/docs/configure/app/performance/prefetch.md +21 -0
  171. package/docs/configure/app/performance/preload.md +23 -0
  172. package/docs/configure/app/performance/print-file-size.md +40 -0
  173. package/docs/configure/app/performance/profile.md +10 -0
  174. package/docs/configure/app/performance/remove-console.md +10 -0
  175. package/docs/configure/app/performance/remove-moment-locale.md +10 -0
  176. package/docs/configure/app/performance/rsdoctor.md +38 -0
  177. package/docs/configure/app/plugins.md +59 -0
  178. package/docs/configure/app/resolve/alias-strategy.md +10 -0
  179. package/docs/configure/app/resolve/alias.md +9 -0
  180. package/docs/configure/app/resolve/condition-names.md +13 -0
  181. package/docs/configure/app/resolve/dedupe.md +9 -0
  182. package/docs/configure/app/resolve/extensions.md +13 -0
  183. package/docs/configure/app/runtime/0-intro.md +58 -0
  184. package/docs/configure/app/runtime/plugins.md +58 -0
  185. package/docs/configure/app/runtime/router.md +35 -0
  186. package/docs/configure/app/security/check-syntax.md +69 -0
  187. package/docs/configure/app/security/nonce.md +15 -0
  188. package/docs/configure/app/security/sri.md +20 -0
  189. package/docs/configure/app/server/base-url.md +26 -0
  190. package/docs/configure/app/server/port.md +18 -0
  191. package/docs/configure/app/server/public-routes.md +22 -0
  192. package/docs/configure/app/server/routes.md +86 -0
  193. package/docs/configure/app/server/rsc.md +22 -0
  194. package/docs/configure/app/server/ssr-by-entries.md +25 -0
  195. package/docs/configure/app/server/ssr.md +80 -0
  196. package/docs/configure/app/server/tsconfig-path.md +59 -0
  197. package/docs/configure/app/source/alias-strategy.md +14 -0
  198. package/docs/configure/app/source/alias.md +23 -0
  199. package/docs/configure/app/source/config-dir.md +20 -0
  200. package/docs/configure/app/source/decorators.md +25 -0
  201. package/docs/configure/app/source/define.md +16 -0
  202. package/docs/configure/app/source/disable-default-entries.md +28 -0
  203. package/docs/configure/app/source/enable-async-entry.md +54 -0
  204. package/docs/configure/app/source/enable-async-pre-entry.md +26 -0
  205. package/docs/configure/app/source/entries-dir.md +35 -0
  206. package/docs/configure/app/source/entries.md +179 -0
  207. package/docs/configure/app/source/exclude.md +10 -0
  208. package/docs/configure/app/source/global-vars.md +106 -0
  209. package/docs/configure/app/source/include.md +36 -0
  210. package/docs/configure/app/source/main-entry-name.md +24 -0
  211. package/docs/configure/app/source/pre-entry.md +10 -0
  212. package/docs/configure/app/source/react-compiler.md +68 -0
  213. package/docs/configure/app/source/transform-import.md +27 -0
  214. package/docs/configure/app/split-chunks.md +17 -0
  215. package/docs/configure/app/tools/autoprefixer.md +44 -0
  216. package/docs/configure/app/tools/bundler-chain.md +26 -0
  217. package/docs/configure/app/tools/css-extract.md +33 -0
  218. package/docs/configure/app/tools/css-loader.md +17 -0
  219. package/docs/configure/app/tools/dev-server.md +113 -0
  220. package/docs/configure/app/tools/html-plugin.md +41 -0
  221. package/docs/configure/app/tools/less.md +81 -0
  222. package/docs/configure/app/tools/lightningcss-loader.md +35 -0
  223. package/docs/configure/app/tools/minify-css.md +53 -0
  224. package/docs/configure/app/tools/postcss.md +34 -0
  225. package/docs/configure/app/tools/rspack.md +10 -0
  226. package/docs/configure/app/tools/sass.md +78 -0
  227. package/docs/configure/app/tools/style-loader.md +10 -0
  228. package/docs/configure/app/tools/swc.md +65 -0
  229. package/docs/configure/app/tools/ts-checker.md +116 -0
  230. package/docs/configure/app/usage.md +276 -0
  231. package/docs/guides/advanced-features/bff/cross-project.md +109 -0
  232. package/docs/guides/advanced-features/bff/data-platform.md +116 -0
  233. package/docs/guides/advanced-features/bff/extend-server.md +120 -0
  234. package/docs/guides/advanced-features/bff/frameworks.md +243 -0
  235. package/docs/guides/advanced-features/bff/function.md +318 -0
  236. package/docs/guides/advanced-features/bff/operators.md +554 -0
  237. package/docs/guides/advanced-features/bff/sdk.md +116 -0
  238. package/docs/guides/advanced-features/bff/upload.md +101 -0
  239. package/docs/guides/advanced-features/bff.md +18 -0
  240. package/docs/guides/advanced-features/build-performance.md +130 -0
  241. package/docs/guides/advanced-features/compatibility.md +120 -0
  242. package/docs/guides/advanced-features/international/advanced.md +128 -0
  243. package/docs/guides/advanced-features/international/api.md +267 -0
  244. package/docs/guides/advanced-features/international/best-practices.md +286 -0
  245. package/docs/guides/advanced-features/international/configuration.md +228 -0
  246. package/docs/guides/advanced-features/international/locale-detection.md +126 -0
  247. package/docs/guides/advanced-features/international/quick-start.md +128 -0
  248. package/docs/guides/advanced-features/international/resource-loading.md +154 -0
  249. package/docs/guides/advanced-features/international/routing.md +173 -0
  250. package/docs/guides/advanced-features/international.md +27 -0
  251. package/docs/guides/advanced-features/low-level.md +46 -0
  252. package/docs/guides/advanced-features/page-performance/code-split.md +77 -0
  253. package/docs/guides/advanced-features/page-performance/inline-assets.md +159 -0
  254. package/docs/guides/advanced-features/page-performance/optimize-bundle.md +97 -0
  255. package/docs/guides/advanced-features/page-performance/react-compiler.md +51 -0
  256. package/docs/guides/advanced-features/server-monitor/logger.md +41 -0
  257. package/docs/guides/advanced-features/server-monitor/metrics.md +58 -0
  258. package/docs/guides/advanced-features/server-monitor/monitors.md +242 -0
  259. package/docs/guides/advanced-features/source-build.md +164 -0
  260. package/docs/guides/advanced-features/web-server.md +288 -0
  261. package/docs/guides/basic-features/alias.md +102 -0
  262. package/docs/guides/basic-features/css/css-in-js.md +72 -0
  263. package/docs/guides/basic-features/css/css-modules.md +212 -0
  264. package/docs/guides/basic-features/css/css.md +27 -0
  265. package/docs/guides/basic-features/css/tailwindcss.md +27 -0
  266. package/docs/guides/basic-features/data/data-cache.md +510 -0
  267. package/docs/guides/basic-features/data/data-fetch.md +415 -0
  268. package/docs/guides/basic-features/data/data-write.md +227 -0
  269. package/docs/guides/basic-features/debug/mock.md +109 -0
  270. package/docs/guides/basic-features/debug/proxy.md +21 -0
  271. package/docs/guides/basic-features/debug/rsdoctor.md +47 -0
  272. package/docs/guides/basic-features/debug/using-storybook.md +112 -0
  273. package/docs/guides/basic-features/deploy.md +458 -0
  274. package/docs/guides/basic-features/env-vars.md +177 -0
  275. package/docs/guides/basic-features/html.md +255 -0
  276. package/docs/guides/basic-features/output-files.md +141 -0
  277. package/docs/guides/basic-features/render/before-render.md +108 -0
  278. package/docs/guides/basic-features/render/overview.md +47 -0
  279. package/docs/guides/basic-features/render/rsc.md +516 -0
  280. package/docs/guides/basic-features/render/ssg.md +228 -0
  281. package/docs/guides/basic-features/render/ssr-cache.md +201 -0
  282. package/docs/guides/basic-features/render/ssr.md +321 -0
  283. package/docs/guides/basic-features/render/streaming-ssr.md +264 -0
  284. package/docs/guides/basic-features/routes/config-routes.md +426 -0
  285. package/docs/guides/basic-features/routes/routes.md +524 -0
  286. package/docs/guides/basic-features/static-assets/json-files.md +120 -0
  287. package/docs/guides/basic-features/static-assets/svg-assets.md +168 -0
  288. package/docs/guides/basic-features/static-assets/wasm-assets.md +62 -0
  289. package/docs/guides/basic-features/static-assets.md +160 -0
  290. package/docs/guides/basic-features/testing/playwright.md +120 -0
  291. package/docs/guides/basic-features/testing/rstest.md +251 -0
  292. package/docs/guides/concept/builder.md +37 -0
  293. package/docs/guides/concept/entries.md +319 -0
  294. package/docs/guides/concept/server.md +35 -0
  295. package/docs/guides/get-started/ai-coding-agents.md +58 -0
  296. package/docs/guides/get-started/glossary.md +63 -0
  297. package/docs/guides/get-started/introduction.md +40 -0
  298. package/docs/guides/get-started/quick-start.md +269 -0
  299. package/docs/guides/get-started/tech-stack.md +91 -0
  300. package/docs/guides/get-started/ultramodern.md +440 -0
  301. package/docs/guides/get-started/upgrade.md +118 -0
  302. package/docs/guides/topic-detail/module-federation/application.md +116 -0
  303. package/docs/guides/topic-detail/module-federation/deploy.md +104 -0
  304. package/docs/guides/topic-detail/module-federation/i18n.md +670 -0
  305. package/docs/guides/topic-detail/module-federation/introduce.md +35 -0
  306. package/docs/guides/topic-detail/module-federation/ssr.md +182 -0
  307. package/docs/guides/topic-detail/module-federation/usage.md +219 -0
  308. package/docs/guides/troubleshooting/builder.md +110 -0
  309. package/docs/guides/troubleshooting/cli.md +35 -0
  310. package/docs/guides/troubleshooting/dependencies.md +119 -0
  311. package/docs/guides/troubleshooting/hmr.md +144 -0
  312. package/docs/guides/upgrade/config.md +954 -0
  313. package/docs/guides/upgrade/entry.md +463 -0
  314. package/docs/guides/upgrade/other.md +183 -0
  315. package/docs/guides/upgrade/overview.md +33 -0
  316. package/docs/guides/upgrade/tailwindcss.md +91 -0
  317. package/docs/guides/upgrade/web-server.md +109 -0
  318. package/docs/index.md +33 -0
  319. package/docs/llms.txt +290 -0
  320. package/docs/plugin/cli-plugins/api.md +573 -0
  321. package/docs/plugin/cli-plugins/life-cycle.md +2 -0
  322. package/docs/plugin/introduction.md +152 -0
  323. package/docs/plugin/official/cli-plugins/plugin-bff.md +5 -0
  324. package/docs/plugin/official/cli-plugins/plugin-ssg.md +5 -0
  325. package/docs/plugin/official/cli-plugins/plugin-styled-components.md +5 -0
  326. package/docs/plugin/official/cli-plugins.md +4 -0
  327. package/docs/plugin/plugin-system.md +238 -0
  328. package/docs/plugin/runtime-plugins/api.md +194 -0
  329. package/docs/plugin/runtime-plugins/life-cycle.md +2 -0
  330. package/docs/plugin/server-plugins/api.md +209 -0
  331. package/docs/plugin/server-plugins/life-cycle.md +13 -0
  332. package/docs/tutorials/examples/csr-auth.md +9 -0
  333. package/docs/tutorials/foundations/introduction.md +16 -0
  334. package/package.json +63 -22
@@ -0,0 +1,86 @@
1
+ # server.routes
2
+
3
+ - **Type:** `Object`
4
+ - **Default:** Server-side routing rules generated based on file conventions, with one route rule generated for each entry, and the entry name is equal to the route path.
5
+
6
+ This configuration option only applies to server-side routing and can customize the access route of application entries.
7
+
8
+ ## Custom access routes
9
+
10
+ The `key` of the object is the name of the current application entry, and the value can be a `string | Array<string>`.
11
+
12
+ When the value type is `string`, the current value represents the route path for accessing the entry.
13
+
14
+ ```ts title="modern.config.ts"
15
+ export default defineConfig({
16
+ server: {
17
+ routes: {
18
+ // Default route is /entryName1, customized to /p/test1
19
+ entryName1: '/p/test1'
20
+ // Supports dynamic server-side routing configuration
21
+ entryName2: '/detail/:id'
22
+ }
23
+ }
24
+ });
25
+ ```
26
+
27
+ Multiple access routes can also be set for the entry through `Array<string>`:
28
+
29
+ ```ts title="modern.config.ts"
30
+ export default defineConfig({
31
+ server: {
32
+ routes: {
33
+ 'page-a': [`/a`, '/b'],
34
+ },
35
+ },
36
+ });
37
+ ```
38
+
39
+ At this time, the `page-a` entry can be accessed through both the `/a` and `/b` routes.
40
+
41
+ After executing the `dev` command, you can view two route records for the `page-a` entry in `dist/route.json`:
42
+
43
+ ```json
44
+ {
45
+ "routes": [
46
+ {
47
+ "urlPath": "/a",
48
+ "entryName": "page-a",
49
+ "entryPath": "html/page-a/index.html",
50
+ "isSPA": true,
51
+ "isSSR": false
52
+ },
53
+ {
54
+ "urlPath": "/b",
55
+ "entryName": "page-a",
56
+ "entryPath": "html/page-a/index.html",
57
+ "isSPA": true,
58
+ "isSSR": false
59
+ }
60
+ ]
61
+ }
62
+ ```
63
+
64
+ ## Custom response headers
65
+
66
+ Response headers can be set by configuring the `resHeaders` of the entry:
67
+
68
+ ```ts title="modern.config.ts"
69
+ export default defineConfig({
70
+ server: {
71
+ routes: {
72
+ 'page-a': {
73
+ route: ['/a', '/b'],
74
+ resHeaders: {
75
+ 'x-modern-test': '1',
76
+ },
77
+ },
78
+ },
79
+ },
80
+ });
81
+ ```
82
+
83
+ :::note
84
+ This configuration takes effect in both the production and development environments, and different response headers can be set according to the NODE\_ENV to distinguish between environments. However, if you only need to set response headers in the development environment, it is recommended to use `tools.devServer.headers`.
85
+
86
+ :::
@@ -0,0 +1,22 @@
1
+ # server.rsc
2
+
3
+ - **Type:** `boolean`
4
+ - **Default:** `false`
5
+
6
+ Configure React Server Components (RSC).
7
+
8
+ :::warning UltraModern availability
9
+ RSC is not shipped or supported in the current UltraModern company distribution. Keep this option `false`. The Rspack Flight runtime remains under upstream review, and enabling RSC intentionally fails unless an application supplies the complete optional toolchain.
10
+
11
+ Do not install `react-server-dom-rspack` or add an application-level pnpm patch to bypass this boundary.
12
+ :::
13
+
14
+ ```ts title="modern.config.ts"
15
+ export default defineConfig({
16
+ server: {
17
+ rsc: false,
18
+ },
19
+ });
20
+ ```
21
+
22
+ The [React Server Components guide](/guides/basic-features/render/rsc.md) is retained as reference material for future upstream adoption.
@@ -0,0 +1,25 @@
1
+ # server.ssrByEntries
2
+
3
+ - **Type:** `Object`
4
+ - **Default:** `undefined`
5
+
6
+ Set SSR options by entry, and the properties inside the option are the same as [ssr](/configure/app/server/ssr.md). The specified value will be replaced and merged with the content of the SSR attribute, for example:
7
+
8
+ :::info
9
+ The "entry name" defaults to the directory name. In a few cases, when defining an entry through `source.entries`, the entry name is the `key` of the `source.entries` object.
10
+
11
+ :::
12
+
13
+ ```ts title="modern.config.ts"
14
+ export default defineConfig({
15
+ server: {
16
+ ssr: true,
17
+ ssrByEntries: {
18
+ // page-a does not enable SSR
19
+ 'page-a': false,
20
+ },
21
+ },
22
+ });
23
+ ```
24
+
25
+ In the above configuration, the project enables SSR as a whole, but the SSR rendering ability is disabled for the `page-a` entry.
@@ -0,0 +1,80 @@
1
+ # server.ssr
2
+
3
+ - **Type:** `boolean` | `Object`
4
+ - **Default:** `false`
5
+
6
+ Enable SSR configuration.
7
+
8
+ ### Boolean Type
9
+
10
+ When the value type is `boolean`, it indicates whether to enable SSR deployment mode. The default is `false` to disable it.
11
+
12
+ ```ts title="modern.config.ts"
13
+ export default defineConfig({
14
+ server: {
15
+ ssr: true,
16
+ },
17
+ });
18
+ ```
19
+
20
+ ### Object Type
21
+
22
+ When the value type is `Object`, the following properties can be configured:
23
+
24
+ | Name | Type | Default | Description |
25
+ | ---------------------- | ------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
26
+ | mode | `string` | `stream` | which defaults to using streaming rendering. Configure `string` to use `renderToString` for rendering |
27
+ | forceCSR | `boolean` | `false` | which is off by default for forcing CSR rendering. Configure `true` to force CSR by adding `?csr=true` or adding `x-modern-ssr-fallback` header when accessing the page |
28
+ | unsafeHeaders | `string[]` | `[]` | For safety reasons, Modern.js does not add excessive content to SSR\_DATA. Developers can use this configuration to specify the headers that need to be injected |
29
+ | loaderFailureMode | `clientRender \| errorBoundary` | `errorBoundary` | The default configuration is `'errorBoundary'`, when an error occurs in [data loader](/guides/basic-features/data/data-fetch.md#data-loader-recommended), it will default to rendering the [`Error`](/guides/basic-features/routes/routes.md#error-handling) component of the route. When configured as `'clientRender'`, if a loader throws an error, it switch to client-side rendering,you can use it with [Client Loader](/guides/basic-features/data/data-fetch.md#client-loader) |
30
+ | moduleFederationAppSSR | `boolean` | `false` | Enables app-level Module Federation SSR contract handshake. Enable this in both host and remote apps when using app-level MF SSR |
31
+
32
+ ```ts title="modern.config.ts"
33
+ export default defineConfig({
34
+ server: {
35
+ ssr: {
36
+ forceCSR: true,
37
+ mode: 'stream',
38
+ unsafeHeaders: ['User-Agent'],
39
+ moduleFederationAppSSR: true,
40
+ },
41
+ },
42
+ });
43
+ ```
44
+
45
+ ### Active Fallback
46
+
47
+ In a production environment, there are scenarios where it is necessary to actively fallback an SSR project to CSR. Examples include
48
+
49
+ 1. When the SSR fails, a fallback to the CSR is required to ensure product availability.
50
+
51
+ 2. When the SSR is working normally, but there are rendering failures during csr, debugging is required.
52
+
53
+ 3. When the SSR server is under heavy load, it may be necessary to fallback some traffic directly to the CSR to avoid service downtime.
54
+
55
+ By configuring `server.ssr.forceCSR` to `true` in the project, you can control this behavior through query strings or request headers.
56
+
57
+ For example, in a custom Web Server middleware, you can actively fallback when traffic exceeds a certain threshold:
58
+
59
+ ```ts title="server/modern.server.ts"
60
+ import {
61
+ defineServerConfig,
62
+ type MiddlewareHandler,
63
+ } from '@modern-js/server-runtime';
64
+
65
+ export const handler: MiddlewareHandler = async (c, next) => {
66
+ if (condition) {
67
+ c.set('forceCSR', '1');
68
+ }
69
+ await next();
70
+ };
71
+
72
+ export default defineServerConfig({
73
+ middlewares: [
74
+ {
75
+ name: 'request-middleware',
76
+ handler,
77
+ },
78
+ ],
79
+ });
80
+ ```
@@ -0,0 +1,59 @@
1
+ # server.tsconfigPath
2
+
3
+ - **Type:** `string`
4
+ - **Default:** `<appDirectory>/tsconfig.json`
5
+
6
+ Specifies the tsconfig file used by server-side TypeScript processes.
7
+
8
+ This option affects:
9
+
10
+ - BFF / API compilation (`@modern-js/plugin-bff`)
11
+ - Custom server compilation (`*.ts` files under `server/`)
12
+ - Runtime Node-native TypeScript registration, such as SSR, `modern.config.ts`, and `.ts` files under `config/`
13
+
14
+ When this option is not set, `<appDirectory>/tsconfig.json` is used by default.
15
+
16
+ ## When to use
17
+
18
+ Use this option when frontend and server-side code need different TypeScript configurations.
19
+
20
+ For example, the frontend can use `moduleResolution: "Bundler"`, while the server side uses `moduleResolution: "NodeNext"` for type resolution of conditional exports or subpath exports.
21
+
22
+ ## Example
23
+
24
+ The example below uses `tsconfig.server.json` as the file name. You can use another name in your project.
25
+
26
+ Add `<appDirectory>/tsconfig.server.json`:
27
+
28
+ ```jsonc title="tsconfig.server.json"
29
+ {
30
+ "extends": "./tsconfig.json",
31
+ "compilerOptions": {
32
+ "module": "NodeNext",
33
+ "moduleResolution": "NodeNext",
34
+ "target": "ES2022",
35
+ "lib": ["ESNext"],
36
+ "types": ["node"],
37
+ "esModuleInterop": true,
38
+ "experimentalDecorators": true,
39
+ "emitDecoratorMetadata": true
40
+ },
41
+ "include": ["api", "shared", "server", "config", "modern.config.ts"]
42
+ }
43
+ ```
44
+
45
+ Specify this file in `modern.config.ts`:
46
+
47
+ ```ts title="modern.config.ts"
48
+ export default defineConfig({
49
+ server: {
50
+ tsconfigPath: './tsconfig.server.json',
51
+ },
52
+ });
53
+ ```
54
+
55
+ ## Notes
56
+
57
+ - `tsconfigPath` is resolved relative to `appDirectory`. Absolute paths are also supported.
58
+ - It is recommended to inherit shared options such as `paths` from the root tsconfig through `extends`, instead of maintaining them in multiple files.
59
+ - If the configured file does not exist, the runtime TypeScript setup will throw an error at startup.
@@ -0,0 +1,14 @@
1
+ # source.aliasStrategy
2
+
3
+ :::warning Deprecation Warning
4
+ `source.aliasStrategy` is deprecated, please use [resolve.aliasStrategy](/configure/app/resolve/alias-strategy.md) instead.
5
+ :::
6
+
7
+ - **Type:** `'prefer-tsconfig' | 'prefer-alias'`
8
+ - **Default:** `'prefer-tsconfig'`
9
+
10
+ `source.aliasStrategy` is used to control the priority between the `paths` option in `tsconfig.json` and the `alias` option in the bundler.
11
+
12
+ :::info
13
+ The usage of this configuration item is exactly the same as that of Rsbuild. For detailed information, please refer to [Rsbuild - source.aliasStrategy](https://v2.rsbuild.dev/config/source/alias-strategy).
14
+ :::
@@ -0,0 +1,23 @@
1
+ # source.alias
2
+
3
+ :::warning Deprecation Warning
4
+ `source.alias` is deprecated, please use [resolve.alias](/configure/app/resolve/alias.md) instead.
5
+ :::
6
+
7
+ - **Type:**
8
+
9
+ ```ts
10
+ type Alias = Record<string, string | false | (string | false)[]> | Function;
11
+ ```
12
+
13
+ - **Default:** `undefined`
14
+
15
+ Create aliases to import or require certain modules, same as the [resolve.alias](https://rspack.rs/config/resolve#resolvealias) config of Rspack.
16
+
17
+ :::tip
18
+ For TypeScript projects, you only need to configure [compilerOptions.paths](https://www.typescriptlang.org/tsconfig#paths) in the `tsconfig.json` file. The Rsbuild will automatically recognize it, so there is no need to configure the `source.alias` option separately. For more details, please refer to [Path Aliases](https://modernjs.dev/en/guides/basic-features/alias.html).
19
+ :::
20
+
21
+ :::info
22
+ The usage of this configuration item is exactly the same as that of Rsbuild. For detailed information, please refer to [Rsbuild - source.alias](https://v2.rsbuild.dev/config/source/alias).
23
+ :::
@@ -0,0 +1,20 @@
1
+ # source.configDir
2
+
3
+ - **Type:** `string`
4
+ - **Default:** `'./config'`
5
+
6
+ Modern.js supports placing some files in the `./config` folder to customize HTML templates, icons, static assets, etc. For details, please refer to [File Convention](/apis/app/hooks/config/html.md).
7
+
8
+ This option allows you to customize the directory of the configuration files.
9
+
10
+ For example, adjust the assets directory to the `resources` directory:
11
+
12
+ ```js title="modern.config.ts"
13
+ import { defineConfig } from '@modern-js/app-tools';
14
+
15
+ export default defineConfig({
16
+ source: {
17
+ configDir: './resources',
18
+ },
19
+ });
20
+ ```
@@ -0,0 +1,25 @@
1
+ # source.decorators
2
+
3
+ - **Type:**
4
+
5
+ ```ts
6
+ type Decorators = {
7
+ version?: 'legacy' | '2022-03';
8
+ };
9
+ ```
10
+
11
+ - **Default:**
12
+
13
+ ```ts
14
+ const defaultDecorators = {
15
+ version: 'legacy';
16
+ };
17
+ ```
18
+
19
+ Used to configure the decorators syntax.
20
+
21
+ :::warning
22
+ The usage of this configuration item is exactly the same as that of Rsbuild, but the default value is different. For detailed information, please refer to [Rsbuild - source.decorators](https://v2.rsbuild.rs/config/source/decorators).
23
+ :::
24
+
25
+ We found that most projects still use the `legacy` version of the decorator syntax, so the default value is `legacy`.
@@ -0,0 +1,16 @@
1
+ # source.define
2
+
3
+ - **Type:** `Record<string, unknown>`
4
+ - **Default:**
5
+
6
+ ```ts
7
+ const defaultDefine = {
8
+ 'process.env.MODERN_TARGET': '"browser"',
9
+ };
10
+ ```
11
+
12
+ Replaces variables in your code with other values or expressions at compile time. This can be useful for allowing different behavior between development builds and production builds.
13
+
14
+ :::info
15
+ The usage of this configuration item is exactly the same as that of Rsbuild. For detailed information, please refer to [Rsbuild - source.define](https://v2.rsbuild.dev/config/source/define).
16
+ :::
@@ -0,0 +1,28 @@
1
+ # source.disableDefaultEntries
2
+
3
+ - **Type:** `boolean`
4
+ - **Default:** `false`
5
+
6
+ Used to disable the functionality of automatically identifying page entry points based on directory structure.
7
+
8
+ :::info
9
+ By default, Modern.js automatically determines the entry points of pages based on directory conventions, as described in [Entries](/guides/concept/entries.md).
10
+
11
+ :::
12
+
13
+ To disable this default behavior, set the following:
14
+
15
+ ```ts title="modern.config.ts"
16
+ export default defineConfig({
17
+ source: {
18
+ disableDefaultEntries: true,
19
+ },
20
+ });
21
+ ```
22
+
23
+ After disabling the default behavior, you will need to use the [`source.entries`](/configure/app/source/entries.md) configuration to define custom entry points.
24
+
25
+ :::warning
26
+ We recommend organizing your code using the directory conventions provided by Modern.js to make better use of the framework's functionality and to avoid some redundant configurations.
27
+
28
+ :::
@@ -0,0 +1,54 @@
1
+ # source.enableAsyncEntry
2
+
3
+ - **Type:** `boolean`
4
+ - **Default:** `false`
5
+
6
+ This option is used for Rspack Module Federation scenario.
7
+
8
+ When this option is enabled, Modern.js will wrap the automatically generated entry files with dynamic import (Asynchronous Boundaries), allowing page code to consume remote modules generated by Module Federation.
9
+
10
+ ## Background
11
+
12
+ Module Federation (MF) is a technology solution that allows multiple JavaScript applications to share code and resources. Similar to microservices architecture on the server side, it allows you to split large applications into multiple independent smaller applications that can be developed, tested, and deployed independently, while dynamically loading modules from other applications at runtime.
13
+
14
+ Module Federation solves the problem of code duplication across multiple frontend applications. In the traditional approach, if multiple applications need to use the same components or utility functions, you would need to duplicate this code in each application, leading to code duplication, high maintenance costs, and larger application sizes. With Module Federation, you can place common code in one application and have other applications load it dynamically as needed, enabling code sharing and reducing duplication.
15
+
16
+ Module Federation 2.0 supports [Rspack](https://rspack.rs/) build tools, and provides enhanced features such as dynamic type hints, Manifest, Federation Runtime, runtime plugin system, and Chrome Devtools support for better development experience and debugging capabilities. You can visit the [Module Federation official documentation](https://module-federation.io/) to learn more.
17
+
18
+ Modern.js provides an example project for Module Federation. Please refer to [module-federation-examples - modernjs](https://github.com/module-federation/module-federation-examples/tree/db5bdbeee56f779999a2c591fc553eb94eb20b36/modernjs).
19
+
20
+ ## Example
21
+
22
+ First, enable this option in the configuration file:
23
+
24
+ ```ts title="modern.config.ts"
25
+ export default defineConfig({
26
+ source: {
27
+ enableAsyncEntry: true,
28
+ },
29
+ });
30
+ ```
31
+
32
+ Then run the `dev` or `build` command, and you will see that the files automatically generated by Modern.js have the following structure:
33
+
34
+ ```bash
35
+ node_modules
36
+ └─ .modern-js
37
+ └─ main
38
+ ├─ bootstrap.jsx # asynchronous entry file
39
+ ├─ index.js # real entry code
40
+ └─ index.html
41
+ ```
42
+
43
+ The contents of `bootstrap.js` are as follows:
44
+
45
+ ```js
46
+ import('./index.jsx');
47
+ ```
48
+
49
+ At this point, you can consume any remote module in the current page.
50
+
51
+ :::info
52
+ Modern.js does not have ModuleFederationPlugin plugin built in. Please configure the ModuleFederationPlugin yourself via [tools.bundlerChain](/configure/app/tools/bundler-chain.md).
53
+
54
+ :::
@@ -0,0 +1,26 @@
1
+ # source.enableAsyncPreEntry
2
+
3
+ - **Type:** `boolean`
4
+ - **Default:** `false`
5
+
6
+ When enabled, Modern.js will inject the modules configured in `source.preEntry` to the top of the auto-generated entry file (`index.jsx`) in order.
7
+
8
+ This option only takes effect when `source.enableAsyncEntry` is enabled. If async entry is not enabled, this behavior will be skipped and the original builder-side `source.preEntry` injection remains unchanged.
9
+
10
+ This option is mainly designed to work with `source.enableAsyncEntry`: when async entry is enabled, the final build entry becomes `bootstrap.jsx`, and the builder-side `source.preEntry` may not be injected into the real entry code. With `source.enableAsyncPreEntry` enabled, `preEntry` will be injected into `index.jsx` (the real entry code), so it also works in async entry scenarios.
11
+
12
+ Meanwhile, when both `source.enableAsyncEntry` and `source.enableAsyncPreEntry` are enabled, Modern.js will not pass `source.preEntry` into builder config to avoid duplicate injection or injection into an unexpected entry.
13
+
14
+ ## Example
15
+
16
+ ```ts title="modern.config.ts"
17
+ import { defineConfig } from '@modern-js/app-tools';
18
+
19
+ export default defineConfig({
20
+ source: {
21
+ enableAsyncEntry: true,
22
+ enableAsyncPreEntry: true,
23
+ preEntry: ['./src/pre-a.ts', './src/pre-b.ts'],
24
+ },
25
+ });
26
+ ```
@@ -0,0 +1,35 @@
1
+ # source.entriesDir
2
+
3
+ - **Type:** `string`
4
+ - **Default:** `'./src'`
5
+
6
+ By default, Modern.js scans the `src` directory to identify page entries. You can customize the directory used for identifying page entries with this option.
7
+
8
+ For example, with the following configuration and directory structure:
9
+
10
+ ```ts title="modern.config.ts"
11
+ export default defineConfig({
12
+ source: {
13
+ entriesDir: './src/pages',
14
+ },
15
+ });
16
+ ```
17
+
18
+ ```bash title="Project directory structure"
19
+ .
20
+ └── src
21
+ └── pages
22
+ ├── a
23
+ │ └── App.tsx
24
+ └── b
25
+ └── App.tsx
26
+ ```
27
+
28
+ Modern.js will generate the build entries `a` and `b` based on the `./src/pages` directory structure. The result is as follows:
29
+
30
+ ```js
31
+ const entry = {
32
+ a: './src/pages/a/App.tsx',
33
+ b: './src/pages/b/App.tsx',
34
+ };
35
+ ```