@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
@@ -46,6 +46,10 @@ function modifyOutputConfig(config, appContext) {
46
46
  };
47
47
  }
48
48
  function createBuilderProviderConfig(resolveConfig, appContext) {
49
+ const builderDevConfig = {
50
+ ...resolveConfig.dev
51
+ };
52
+ delete builderDevConfig.mockDir;
49
53
  const htmlConfig = {
50
54
  ...resolveConfig.html
51
55
  };
@@ -64,7 +68,7 @@ function createBuilderProviderConfig(resolveConfig, appContext) {
64
68
  ...resolveConfig.source
65
69
  },
66
70
  dev: {
67
- ...resolveConfig.dev,
71
+ ...builderDevConfig,
68
72
  port: appContext.port
69
73
  },
70
74
  server: serverConfig,
@@ -82,6 +82,13 @@ function resolvePackageFile(packageName, filePath, paths) {
82
82
  paths
83
83
  }));
84
84
  } catch {
85
+ try {
86
+ const packageJsonPath = require.resolve(`${packageName}/package.json`, {
87
+ paths
88
+ });
89
+ const packageFile = external_node_path_default().join(external_node_path_default().dirname(packageJsonPath), filePath);
90
+ if (external_node_fs_default().existsSync(packageFile)) return external_node_fs_default().realpathSync(packageFile);
91
+ } catch {}
85
92
  const packageEntry = resolvePackageEntry(packageName, paths);
86
93
  if (!packageEntry) return;
87
94
  const packageRoot = findPackageRoot(packageEntry, packageName);
@@ -98,9 +98,10 @@ const build = async (api, options)=>{
98
98
  utils_namespaceObject.logger.info('Starting production build...');
99
99
  if (!appContext.builder) throw new Error('Expect the Builder to have been initialized, But the appContext.builder received `undefined`');
100
100
  await appContext.builder.onAfterBuild(async ()=>copyEnvFiles(appContext.appDirectory, appContext.distDirectory));
101
- await appContext.builder.build({
101
+ const buildResult = await appContext.builder.build({
102
102
  watch: options?.watch
103
103
  });
104
+ if (!options?.watch) await buildResult?.close();
104
105
  };
105
106
  exports.build = __webpack_exports__.build;
106
107
  for(var __rspack_i in __webpack_exports__)if (-1 === [
@@ -31,10 +31,12 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  deploy: ()=>deploy
32
32
  });
33
33
  const loadPlugins_js_namespaceObject = require("../utils/loadPlugins.js");
34
- const deploy = async (api, options)=>{
34
+ const external_build_js_namespaceObject = require("./build.js");
35
+ const deploy = async (api, options = {})=>{
35
36
  const hooks = api.getHooks();
36
37
  const { metaName } = api.getAppContext();
37
- await (0, loadPlugins_js_namespaceObject.getServerPlugins)(api, metaName);
38
+ if (options.skipBuild) await (0, loadPlugins_js_namespaceObject.getServerPlugins)(api, metaName);
39
+ else await (0, external_build_js_namespaceObject.build)(api);
38
40
  await hooks.onBeforeDeploy.call(options);
39
41
  await hooks.deploy.call();
40
42
  await hooks.onAfterDeploy.call(options);
@@ -56,10 +56,6 @@ const serverCommand = (program, api)=>{
56
56
  };
57
57
  const deployCommand = (program, api)=>{
58
58
  program.command('deploy').usage('[options]').option('-c --config <config>', index_js_namespaceObject.i18n.t(index_js_namespaceObject.localeKeys.command.shared.config)).option('-s --skip-build', index_js_namespaceObject.i18n.t(index_js_namespaceObject.localeKeys.command.shared.skipBuild)).description(index_js_namespaceObject.i18n.t(index_js_namespaceObject.localeKeys.command.deploy.describe)).action(async (options)=>{
59
- if (!options.skipBuild) {
60
- const { build } = await import("./build.js");
61
- await build(api);
62
- }
63
59
  const { deploy } = await import("./deploy.js");
64
60
  await deploy(api, options);
65
61
  process.exit(0);
@@ -31,10 +31,12 @@ __webpack_require__.d(__webpack_exports__, {
31
31
  createDefaultConfig: ()=>createDefaultConfig,
32
32
  isLazyCompilationSafeByDefault: ()=>isLazyCompilationSafeByDefault
33
33
  });
34
+ const server_core_namespaceObject = require("@modern-js/server-core");
34
35
  const utils_namespaceObject = require("@modern-js/utils");
35
36
  const env_js_namespaceObject = require("../utils/env.js");
36
37
  function createDefaultConfig(appContext) {
37
38
  const dev = {
39
+ mockDir: `./${server_core_namespaceObject.AGGRED_DIR.mock}`,
38
40
  cliShortcuts: {
39
41
  help: false,
40
42
  custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key && 'o' !== key)
package/dist/cjs/index.js CHANGED
@@ -1,5 +1,11 @@
1
1
  "use strict";
2
2
  var __webpack_modules__ = {
3
+ "./commands/build" (module) {
4
+ module.exports = require("./commands/build.js");
5
+ },
6
+ "./commands/deploy" (module) {
7
+ module.exports = require("./commands/deploy.js");
8
+ },
3
9
  "./commands/dev" (module) {
4
10
  module.exports = require("./commands/dev.js");
5
11
  },
@@ -51,6 +57,9 @@ var __webpack_modules__ = {
51
57
  "./types?6efa" (module) {
52
58
  module.exports = require("./types/index.js");
53
59
  },
60
+ "./utils/createServer" (module) {
61
+ module.exports = require("./utils/createServer.js");
62
+ },
54
63
  "./utils/generateWatchFiles" (module) {
55
64
  module.exports = require("./utils/generateWatchFiles.js");
56
65
  },
@@ -164,7 +173,10 @@ var __webpack_exports__ = {};
164
173
  "serve",
165
174
  "generateWatchFiles",
166
175
  "initAppContext",
167
- "defineConfig"
176
+ "deploy",
177
+ "defineConfig",
178
+ "build",
179
+ "closeServer"
168
180
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_defineConfig__rspack_import_19[__rspack_import_key];
169
181
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
170
182
  var _presetUltramodern__rspack_import_20 = __webpack_require__("./presetUltramodern");
@@ -178,15 +190,20 @@ var __webpack_exports__ = {};
178
190
  "serve",
179
191
  "generateWatchFiles",
180
192
  "initAppContext",
181
- "defineConfig"
193
+ "deploy",
194
+ "defineConfig",
195
+ "build",
196
+ "closeServer"
182
197
  ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_presetUltramodern__rspack_import_20[__rspack_import_key];
183
198
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
184
- var _commands_dev__rspack_import_21 = __webpack_require__("./commands/dev");
185
- var _commands_serve__rspack_import_22 = __webpack_require__("./commands/serve");
186
- var _rsbuild__rspack_import_23 = __webpack_require__("./rsbuild");
187
- var _types__rspack_import_24 = __webpack_require__("./types?6efa");
199
+ var _commands_build__rspack_import_21 = __webpack_require__("./commands/build");
200
+ var _commands_deploy__rspack_import_22 = __webpack_require__("./commands/deploy");
201
+ var _commands_dev__rspack_import_23 = __webpack_require__("./commands/dev");
202
+ var _commands_serve__rspack_import_24 = __webpack_require__("./commands/serve");
203
+ var _rsbuild__rspack_import_25 = __webpack_require__("./rsbuild");
204
+ var _types__rspack_import_26 = __webpack_require__("./types?6efa");
188
205
  var __rspack_reexport = {};
189
- for(const __rspack_import_key in _types__rspack_import_24)if ([
206
+ for(const __rspack_import_key in _types__rspack_import_26)if ([
190
207
  "dev",
191
208
  "resolveModernRsbuildConfig",
192
209
  "mergeConfig",
@@ -195,10 +212,14 @@ var __webpack_exports__ = {};
195
212
  "serve",
196
213
  "generateWatchFiles",
197
214
  "initAppContext",
198
- "defineConfig"
199
- ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types__rspack_import_24[__rspack_import_key];
215
+ "deploy",
216
+ "defineConfig",
217
+ "build",
218
+ "closeServer"
219
+ ].indexOf(__rspack_import_key) < 0) __rspack_reexport[__rspack_import_key] = ()=>_types__rspack_import_26[__rspack_import_key];
200
220
  __webpack_require__.d(__webpack_exports__, __rspack_reexport);
201
- var _modern_js_plugin_cli__rspack_import_25 = __webpack_require__("@modern-js/plugin/cli");
221
+ var _utils_createServer__rspack_import_27 = __webpack_require__("./utils/createServer");
222
+ var _modern_js_plugin_cli__rspack_import_28 = __webpack_require__("@modern-js/plugin/cli");
202
223
  const appTools = ()=>({
203
224
  name: '@modern-js/app-tools',
204
225
  usePlugins: [
@@ -264,7 +285,18 @@ var __webpack_exports__ = {};
264
285
  ].some((tag)=>(0, _modern_js_utils__rspack_import_3.getArgv)().includes(tag));
265
286
  if (isSkipBuild) return;
266
287
  }
267
- if ('dev' === command || 'start' === command || 'build' === command || 'deploy' === command) {
288
+ const { command: contextCommand } = api.getAppContext();
289
+ const shouldClean = [
290
+ 'dev',
291
+ 'start',
292
+ 'build',
293
+ 'deploy'
294
+ ].includes(command) || [
295
+ 'dev',
296
+ 'start',
297
+ 'build'
298
+ ].includes(contextCommand);
299
+ if (shouldClean) {
268
300
  const resolvedConfig = api.getNormalizedConfig();
269
301
  if (resolvedConfig.output.cleanDistPath) {
270
302
  const appContext = api.getAppContext();
@@ -304,21 +336,27 @@ var __webpack_exports__ = {};
304
336
  });
305
337
  const __rspack_default_export = appTools;
306
338
  __webpack_require__.d(__webpack_exports__, {
339
+ build: ()=>_commands_build__rspack_import_21.build,
340
+ closeServer: ()=>_utils_createServer__rspack_import_27.closeServer,
307
341
  defineConfig: ()=>_defineConfig__rspack_import_19.defineConfig,
308
- dev: ()=>_commands_dev__rspack_import_21.dev,
342
+ deploy: ()=>_commands_deploy__rspack_import_22.deploy,
343
+ dev: ()=>_commands_dev__rspack_import_23.dev,
309
344
  generateWatchFiles: ()=>_utils_generateWatchFiles__rspack_import_16.generateWatchFiles,
310
345
  initAppContext: ()=>_utils_initAppContext__rspack_import_17.initAppContext,
311
- mergeConfig: ()=>_modern_js_plugin_cli__rspack_import_25.mergeConfig,
312
- resolveModernRsbuildConfig: ()=>_rsbuild__rspack_import_23.resolveModernRsbuildConfig,
313
- serve: ()=>_commands_serve__rspack_import_22.serve
346
+ mergeConfig: ()=>_modern_js_plugin_cli__rspack_import_28.mergeConfig,
347
+ resolveModernRsbuildConfig: ()=>_rsbuild__rspack_import_25.resolveModernRsbuildConfig,
348
+ serve: ()=>_commands_serve__rspack_import_24.serve
314
349
  }, {
315
350
  appTools: appTools,
316
351
  default: __rspack_default_export
317
352
  });
318
353
  })();
319
354
  exports.appTools = __webpack_exports__.appTools;
355
+ exports.build = __webpack_exports__.build;
356
+ exports.closeServer = __webpack_exports__.closeServer;
320
357
  exports["default"] = __webpack_exports__["default"];
321
358
  exports.defineConfig = __webpack_exports__.defineConfig;
359
+ exports.deploy = __webpack_exports__.deploy;
322
360
  exports.dev = __webpack_exports__.dev;
323
361
  exports.generateWatchFiles = __webpack_exports__.generateWatchFiles;
324
362
  exports.initAppContext = __webpack_exports__.initAppContext;
@@ -327,8 +365,11 @@ exports.resolveModernRsbuildConfig = __webpack_exports__.resolveModernRsbuildCon
327
365
  exports.serve = __webpack_exports__.serve;
328
366
  for(var __rspack_i in __webpack_exports__)if (-1 === [
329
367
  "appTools",
368
+ "build",
369
+ "closeServer",
330
370
  "default",
331
371
  "defineConfig",
372
+ "deploy",
332
373
  "dev",
333
374
  "generateWatchFiles",
334
375
  "initAppContext",
@@ -55,7 +55,7 @@ const analyze = ()=>({
55
55
  const resolvedConfig = api.getNormalizedConfig();
56
56
  const hooks = api.getHooks();
57
57
  try {
58
- if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)()) utils_namespaceObject.fs.emptydirSync(appContext.internalDirectory);
58
+ if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)(appContext.command)) utils_namespaceObject.fs.emptydirSync(appContext.internalDirectory);
59
59
  } catch {}
60
60
  const apiOnly = await (0, utils_namespaceObject.isApiOnly)(appContext.appDirectory, resolvedConfig.source?.entriesDir, appContext.apiDirectory);
61
61
  const [{ getProdEntrypoints, getProdServerRoutes }] = await Promise.all([
@@ -157,7 +157,7 @@ const analyze = ()=>({
157
157
  htmlTemplates
158
158
  };
159
159
  api.updateAppContext(appContext);
160
- if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)()) {
160
+ if ((0, external_utils_js_namespaceObject.checkIsBuildCommands)(appContext.command)) {
161
161
  await hooks.generateEntryCode.call({
162
162
  entrypoints
163
163
  });
@@ -87,7 +87,7 @@ const parseModule = async ({ source, filename })=>{
87
87
  return await (0, external_es_module_lexer_namespaceObject.parse)(content);
88
88
  };
89
89
  const getServerCombinedModuleFile = (internalDirectory, entryName)=>external_path_default().join(internalDirectory, entryName, 'server-loader-combined.js');
90
- const checkIsBuildCommands = ()=>{
90
+ const checkIsBuildCommands = (contextCommand)=>{
91
91
  const buildCommands = [
92
92
  'dev',
93
93
  'start',
@@ -97,7 +97,8 @@ const checkIsBuildCommands = ()=>{
97
97
  'dev-worker'
98
98
  ];
99
99
  const command = (0, utils_namespaceObject.getCommand)();
100
- return buildCommands.includes(command);
100
+ if (buildCommands.includes(command)) return true;
101
+ return 'dev' === contextCommand || 'start' === contextCommand || 'build' === contextCommand || 'deploy' === contextCommand;
101
102
  };
102
103
  const checkIsServeCommand = ()=>{
103
104
  const command = (0, utils_namespaceObject.getCommand)();
@@ -57,7 +57,7 @@ const initialize = ()=>({
57
57
  api.modifyResolvedConfig(async (resolved)=>{
58
58
  let appContext = api.getAppContext();
59
59
  const userConfig = api.getConfig();
60
- const port = await getServerPort(resolved);
60
+ const port = await getServerPort(resolved, appContext.command);
61
61
  appContext = {
62
62
  ...appContext,
63
63
  port,
@@ -92,9 +92,10 @@ function stabilizeConfig(resolve, config, keys) {
92
92
  resolve[key] = config[key] || {};
93
93
  });
94
94
  }
95
- async function getServerPort(config) {
95
+ async function getServerPort(config, contextCommand) {
96
96
  const prodPort = Number(process.env.PORT) || config.server.port || 8080;
97
- if ((0, utils_namespaceObject.isDev)() && (0, utils_namespaceObject.isDevCommand)()) return (0, utils_namespaceObject.getPort)(Number(process.env.PORT) || prodPort);
97
+ const isProgrammaticDev = 'dev' === contextCommand || 'start' === contextCommand;
98
+ if ((0, utils_namespaceObject.isDev)() && ((0, utils_namespaceObject.isDevCommand)() || isProgrammaticDev)) return (0, utils_namespaceObject.getPort)(Number(process.env.PORT) || prodPort);
98
99
  return prodPort;
99
100
  }
100
101
  exports["default"] = __webpack_exports__["default"];
@@ -60,7 +60,7 @@ const serverBuild = ()=>({
60
60
  name: '@modern-js/server-build',
61
61
  setup (api) {
62
62
  api.onAfterBuild(async ()=>{
63
- const { appDirectory, distDirectory, metaName } = api.getAppContext();
63
+ const { appDirectory, distDirectory, metaName, moduleType } = api.getAppContext();
64
64
  if (!checkHasCache(appDirectory) && !checkHasConfig(appDirectory, metaName)) return;
65
65
  const modernConfig = api.getNormalizedConfig();
66
66
  const distDir = external_path_default().resolve(distDirectory);
@@ -80,7 +80,8 @@ const serverBuild = ()=>({
80
80
  }, {
81
81
  sourceDirs,
82
82
  distDir,
83
- tsconfigPath
83
+ tsconfigPath,
84
+ moduleType
84
85
  });
85
86
  });
86
87
  }
@@ -14,6 +14,10 @@ function modifyOutputConfig(config, appContext) {
14
14
  };
15
15
  }
16
16
  function createBuilderProviderConfig(resolveConfig, appContext) {
17
+ const builderDevConfig = {
18
+ ...resolveConfig.dev
19
+ };
20
+ delete builderDevConfig.mockDir;
17
21
  const htmlConfig = {
18
22
  ...resolveConfig.html
19
23
  };
@@ -32,7 +36,7 @@ function createBuilderProviderConfig(resolveConfig, appContext) {
32
36
  ...resolveConfig.source
33
37
  },
34
38
  dev: {
35
- ...resolveConfig.dev,
39
+ ...builderDevConfig,
36
40
  port: appContext.port
37
41
  },
38
42
  server: serverConfig,
@@ -39,6 +39,13 @@ function resolvePackageFile(packageName, filePath, paths) {
39
39
  paths
40
40
  }));
41
41
  } catch {
42
+ try {
43
+ const packageJsonPath = require.resolve(`${packageName}/package.json`, {
44
+ paths
45
+ });
46
+ const packageFile = node_path.join(node_path.dirname(packageJsonPath), filePath);
47
+ if (node_fs.existsSync(packageFile)) return node_fs.realpathSync(packageFile);
48
+ } catch {}
42
49
  const packageEntry = resolvePackageEntry(packageName, paths);
43
50
  if (!packageEntry) return;
44
51
  const packageRoot = findPackageRoot(packageEntry, packageName);
@@ -56,8 +56,9 @@ const build = async (api, options)=>{
56
56
  logger.info('Starting production build...');
57
57
  if (!appContext.builder) throw new Error('Expect the Builder to have been initialized, But the appContext.builder received `undefined`');
58
58
  await appContext.builder.onAfterBuild(async ()=>copyEnvFiles(appContext.appDirectory, appContext.distDirectory));
59
- await appContext.builder.build({
59
+ const buildResult = await appContext.builder.build({
60
60
  watch: options?.watch
61
61
  });
62
+ if (!options?.watch) await buildResult?.close();
62
63
  };
63
64
  export { build };
@@ -1,8 +1,10 @@
1
1
  import { getServerPlugins } from "../utils/loadPlugins.mjs";
2
- const deploy = async (api, options)=>{
2
+ import { build } from "./build.mjs";
3
+ const deploy = async (api, options = {})=>{
3
4
  const hooks = api.getHooks();
4
5
  const { metaName } = api.getAppContext();
5
- await getServerPlugins(api, metaName);
6
+ if (options.skipBuild) await getServerPlugins(api, metaName);
7
+ else await build(api);
6
8
  await hooks.onBeforeDeploy.call(options);
7
9
  await hooks.deploy.call();
8
10
  await hooks.onAfterDeploy.call(options);
@@ -19,10 +19,6 @@ const serverCommand = (program, api)=>{
19
19
  };
20
20
  const deployCommand = (program, api)=>{
21
21
  program.command('deploy').usage('[options]').option('-c --config <config>', i18n.t(localeKeys.command.shared.config)).option('-s --skip-build', i18n.t(localeKeys.command.shared.skipBuild)).description(i18n.t(localeKeys.command.deploy.describe)).action(async (options)=>{
22
- if (!options.skipBuild) {
23
- const { build } = await import("./build.mjs");
24
- await build(api);
25
- }
26
22
  const { deploy } = await import("./deploy.mjs");
27
23
  await deploy(api, options);
28
24
  process.exit(0);
@@ -1,7 +1,9 @@
1
+ import { AGGRED_DIR } from "@modern-js/server-core";
1
2
  import { DEFAULT_ENTRY_NAME } from "@modern-js/utils";
2
3
  import { getAutoInjectEnv } from "../utils/env.mjs";
3
4
  function createDefaultConfig(appContext) {
4
5
  const dev = {
6
+ mockDir: `./${AGGRED_DIR.mock}`,
5
7
  cliShortcuts: {
6
8
  help: false,
7
9
  custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key && 'o' !== key)
@@ -85,7 +85,18 @@ const appTools = ()=>({
85
85
  ].some((tag)=>getArgv().includes(tag));
86
86
  if (isSkipBuild) return;
87
87
  }
88
- if ('dev' === command || 'start' === command || 'build' === command || 'deploy' === command) {
88
+ const { command: contextCommand } = api.getAppContext();
89
+ const shouldClean = [
90
+ 'dev',
91
+ 'start',
92
+ 'build',
93
+ 'deploy'
94
+ ].includes(command) || [
95
+ 'dev',
96
+ 'start',
97
+ 'build'
98
+ ].includes(contextCommand);
99
+ if (shouldClean) {
89
100
  const resolvedConfig = api.getNormalizedConfig();
90
101
  if (resolvedConfig.output.cleanDistPath) {
91
102
  const appContext = api.getAppContext();
@@ -125,9 +136,12 @@ const appTools = ()=>({
125
136
  });
126
137
  const src = appTools;
127
138
  export { defineConfig } from "./defineConfig.mjs";
139
+ export { build } from "./commands/build.mjs";
140
+ export { deploy } from "./commands/deploy.mjs";
128
141
  export { dev } from "./commands/dev.mjs";
129
142
  export { serve } from "./commands/serve.mjs";
130
143
  export { resolveModernRsbuildConfig } from "./rsbuild.mjs";
144
+ export { closeServer } from "./utils/createServer.mjs";
131
145
  export { mergeConfig } from "@modern-js/plugin/cli";
132
146
  export default src;
133
147
  export { appTools, generateWatchFiles, initAppContext };
@@ -23,7 +23,7 @@ const analyze = ()=>({
23
23
  const resolvedConfig = api.getNormalizedConfig();
24
24
  const hooks = api.getHooks();
25
25
  try {
26
- if (checkIsBuildCommands()) fs.emptydirSync(appContext.internalDirectory);
26
+ if (checkIsBuildCommands(appContext.command)) fs.emptydirSync(appContext.internalDirectory);
27
27
  } catch {}
28
28
  const apiOnly = await isApiOnly(appContext.appDirectory, resolvedConfig.source?.entriesDir, appContext.apiDirectory);
29
29
  const [{ getProdEntrypoints, getProdServerRoutes }] = await Promise.all([
@@ -125,7 +125,7 @@ const analyze = ()=>({
125
125
  htmlTemplates
126
126
  };
127
127
  api.updateAppContext(appContext);
128
- if (checkIsBuildCommands()) {
128
+ if (checkIsBuildCommands(appContext.command)) {
129
129
  await hooks.generateEntryCode.call({
130
130
  entrypoints
131
131
  });
@@ -38,7 +38,7 @@ const parseModule = async ({ source, filename })=>{
38
38
  return await parse(content);
39
39
  };
40
40
  const getServerCombinedModuleFile = (internalDirectory, entryName)=>path.join(internalDirectory, entryName, 'server-loader-combined.js');
41
- const checkIsBuildCommands = ()=>{
41
+ const checkIsBuildCommands = (contextCommand)=>{
42
42
  const buildCommands = [
43
43
  'dev',
44
44
  'start',
@@ -48,7 +48,8 @@ const checkIsBuildCommands = ()=>{
48
48
  'dev-worker'
49
49
  ];
50
50
  const command = getCommand();
51
- return buildCommands.includes(command);
51
+ if (buildCommands.includes(command)) return true;
52
+ return 'dev' === contextCommand || 'start' === contextCommand || 'build' === contextCommand || 'deploy' === contextCommand;
52
53
  };
53
54
  const checkIsServeCommand = ()=>{
54
55
  const command = getCommand();
@@ -25,7 +25,7 @@ const initialize = ()=>({
25
25
  api.modifyResolvedConfig(async (resolved)=>{
26
26
  let appContext = api.getAppContext();
27
27
  const userConfig = api.getConfig();
28
- const port = await getServerPort(resolved);
28
+ const port = await getServerPort(resolved, appContext.command);
29
29
  appContext = {
30
30
  ...appContext,
31
31
  port,
@@ -60,9 +60,10 @@ function stabilizeConfig(resolve, config, keys) {
60
60
  resolve[key] = config[key] || {};
61
61
  });
62
62
  }
63
- async function getServerPort(config) {
63
+ async function getServerPort(config, contextCommand) {
64
64
  const prodPort = Number(process.env.PORT) || config.server.port || 8080;
65
- if (isDev() && isDevCommand()) return getPort(Number(process.env.PORT) || prodPort);
65
+ const isProgrammaticDev = 'dev' === contextCommand || 'start' === contextCommand;
66
+ if (isDev() && (isDevCommand() || isProgrammaticDev)) return getPort(Number(process.env.PORT) || prodPort);
66
67
  return prodPort;
67
68
  }
68
69
  export default initialize;
@@ -17,7 +17,7 @@ const serverBuild = ()=>({
17
17
  name: '@modern-js/server-build',
18
18
  setup (api) {
19
19
  api.onAfterBuild(async ()=>{
20
- const { appDirectory, distDirectory, metaName } = api.getAppContext();
20
+ const { appDirectory, distDirectory, metaName, moduleType } = api.getAppContext();
21
21
  if (!checkHasCache(appDirectory) && !checkHasConfig(appDirectory, metaName)) return;
22
22
  const modernConfig = api.getNormalizedConfig();
23
23
  const distDir = path.resolve(distDirectory);
@@ -37,7 +37,8 @@ const serverBuild = ()=>({
37
37
  }, {
38
38
  sourceDirs,
39
39
  distDir,
40
- tsconfigPath
40
+ tsconfigPath,
41
+ moduleType
41
42
  });
42
43
  });
43
44
  }
@@ -15,6 +15,10 @@ function modifyOutputConfig(config, appContext) {
15
15
  };
16
16
  }
17
17
  function createBuilderProviderConfig(resolveConfig, appContext) {
18
+ const builderDevConfig = {
19
+ ...resolveConfig.dev
20
+ };
21
+ delete builderDevConfig.mockDir;
18
22
  const htmlConfig = {
19
23
  ...resolveConfig.html
20
24
  };
@@ -33,7 +37,7 @@ function createBuilderProviderConfig(resolveConfig, appContext) {
33
37
  ...resolveConfig.source
34
38
  },
35
39
  dev: {
36
- ...resolveConfig.dev,
40
+ ...builderDevConfig,
37
41
  port: appContext.port
38
42
  },
39
43
  server: serverConfig,
@@ -44,6 +44,13 @@ function resolvePackageFile(packageName, filePath, paths) {
44
44
  paths
45
45
  }));
46
46
  } catch {
47
+ try {
48
+ const packageJsonPath = require.resolve(`${packageName}/package.json`, {
49
+ paths
50
+ });
51
+ const packageFile = node_path.join(node_path.dirname(packageJsonPath), filePath);
52
+ if (node_fs.existsSync(packageFile)) return node_fs.realpathSync(packageFile);
53
+ } catch {}
47
54
  const packageEntry = resolvePackageEntry(packageName, paths);
48
55
  if (!packageEntry) return;
49
56
  const packageRoot = findPackageRoot(packageEntry, packageName);
@@ -57,8 +57,9 @@ const build = async (api, options)=>{
57
57
  logger.info('Starting production build...');
58
58
  if (!appContext.builder) throw new Error('Expect the Builder to have been initialized, But the appContext.builder received `undefined`');
59
59
  await appContext.builder.onAfterBuild(async ()=>copyEnvFiles(appContext.appDirectory, appContext.distDirectory));
60
- await appContext.builder.build({
60
+ const buildResult = await appContext.builder.build({
61
61
  watch: options?.watch
62
62
  });
63
+ if (!options?.watch) await buildResult?.close();
63
64
  };
64
65
  export { build };
@@ -1,9 +1,11 @@
1
1
  import "node:module";
2
2
  import { getServerPlugins } from "../utils/loadPlugins.mjs";
3
- const deploy = async (api, options)=>{
3
+ import { build } from "./build.mjs";
4
+ const deploy = async (api, options = {})=>{
4
5
  const hooks = api.getHooks();
5
6
  const { metaName } = api.getAppContext();
6
- await getServerPlugins(api, metaName);
7
+ if (options.skipBuild) await getServerPlugins(api, metaName);
8
+ else await build(api);
7
9
  await hooks.onBeforeDeploy.call(options);
8
10
  await hooks.deploy.call();
9
11
  await hooks.onAfterDeploy.call(options);
@@ -20,10 +20,6 @@ const serverCommand = (program, api)=>{
20
20
  };
21
21
  const deployCommand = (program, api)=>{
22
22
  program.command('deploy').usage('[options]').option('-c --config <config>', i18n.t(localeKeys.command.shared.config)).option('-s --skip-build', i18n.t(localeKeys.command.shared.skipBuild)).description(i18n.t(localeKeys.command.deploy.describe)).action(async (options)=>{
23
- if (!options.skipBuild) {
24
- const { build } = await import("./build.mjs");
25
- await build(api);
26
- }
27
23
  const { deploy } = await import("./deploy.mjs");
28
24
  await deploy(api, options);
29
25
  process.exit(0);
@@ -1,8 +1,10 @@
1
1
  import "node:module";
2
+ import { AGGRED_DIR } from "@modern-js/server-core";
2
3
  import { DEFAULT_ENTRY_NAME } from "@modern-js/utils";
3
4
  import { getAutoInjectEnv } from "../utils/env.mjs";
4
5
  function createDefaultConfig(appContext) {
5
6
  const dev = {
7
+ mockDir: `./${AGGRED_DIR.mock}`,
6
8
  cliShortcuts: {
7
9
  help: false,
8
10
  custom: (shortcuts = [])=>shortcuts.filter(({ key })=>'r' !== key && 'u' !== key && 'o' !== key)
@@ -87,7 +87,18 @@ const appTools = ()=>({
87
87
  ].some((tag)=>getArgv().includes(tag));
88
88
  if (isSkipBuild) return;
89
89
  }
90
- if ('dev' === command || 'start' === command || 'build' === command || 'deploy' === command) {
90
+ const { command: contextCommand } = api.getAppContext();
91
+ const shouldClean = [
92
+ 'dev',
93
+ 'start',
94
+ 'build',
95
+ 'deploy'
96
+ ].includes(command) || [
97
+ 'dev',
98
+ 'start',
99
+ 'build'
100
+ ].includes(contextCommand);
101
+ if (shouldClean) {
91
102
  const resolvedConfig = api.getNormalizedConfig();
92
103
  if (resolvedConfig.output.cleanDistPath) {
93
104
  const appContext = api.getAppContext();
@@ -127,9 +138,12 @@ const appTools = ()=>({
127
138
  });
128
139
  const src = appTools;
129
140
  export { defineConfig } from "./defineConfig.mjs";
141
+ export { build } from "./commands/build.mjs";
142
+ export { deploy } from "./commands/deploy.mjs";
130
143
  export { dev } from "./commands/dev.mjs";
131
144
  export { serve } from "./commands/serve.mjs";
132
145
  export { resolveModernRsbuildConfig } from "./rsbuild.mjs";
146
+ export { closeServer } from "./utils/createServer.mjs";
133
147
  export { mergeConfig } from "@modern-js/plugin/cli";
134
148
  export default src;
135
149
  export { appTools, generateWatchFiles, initAppContext };