@modern-js/app-tools 2.69.5 → 3.0.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (578) hide show
  1. package/bin/modern.js +2 -8
  2. package/dist/cjs/builder/builder-rspack/index.js +35 -27
  3. package/dist/cjs/builder/generator/adapterCopy.js +75 -46
  4. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +83 -81
  5. package/dist/cjs/builder/generator/createCopyPattern.js +59 -58
  6. package/dist/cjs/builder/generator/getBuilderEnvironments.js +80 -82
  7. package/dist/cjs/builder/generator/index.js +70 -85
  8. package/dist/cjs/builder/index.js +44 -47
  9. package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +106 -83
  10. package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +79 -74
  11. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +131 -165
  12. package/dist/cjs/builder/shared/builderPlugins/builderHooks.js +47 -46
  13. package/dist/cjs/builder/shared/builderPlugins/index.js +76 -25
  14. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +66 -49
  15. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +51 -50
  16. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +178 -317
  17. package/dist/cjs/builder/shared/bundlerPlugins/index.js +69 -23
  18. package/dist/cjs/builder/shared/createCopyInfo.js +54 -43
  19. package/dist/cjs/builder/shared/index.js +69 -23
  20. package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +35 -23
  21. package/dist/cjs/builder/shared/types.js +17 -15
  22. package/dist/cjs/commands/build.js +107 -96
  23. package/dist/cjs/commands/deploy.js +40 -32
  24. package/dist/cjs/commands/dev.js +122 -141
  25. package/dist/cjs/commands/index.js +74 -121
  26. package/dist/cjs/commands/inspect.js +45 -39
  27. package/dist/cjs/commands/serve.js +87 -84
  28. package/dist/cjs/compat/hooks.js +97 -177
  29. package/dist/cjs/compat/index.js +57 -59
  30. package/dist/cjs/compat/utils.js +125 -116
  31. package/dist/cjs/config/default.js +118 -225
  32. package/dist/cjs/config/index.js +62 -23
  33. package/dist/cjs/config/initialize/index.js +37 -29
  34. package/dist/cjs/config/initialize/inits.js +92 -106
  35. package/dist/cjs/constants.js +37 -37
  36. package/dist/cjs/defineConfig.js +33 -35
  37. package/dist/cjs/esm/esbuild-loader.js +62 -0
  38. package/dist/cjs/esm/esbuild-loader.mjs +11 -23
  39. package/dist/cjs/esm/register-esm.js +85 -0
  40. package/dist/cjs/esm/register-esm.mjs +41 -54
  41. package/dist/cjs/esm/ts-node-loader.js +62 -0
  42. package/dist/cjs/esm/ts-node-loader.mjs +11 -23
  43. package/dist/cjs/esm/utils.js +69 -0
  44. package/dist/cjs/esm/utils.mjs +24 -36
  45. package/dist/cjs/exports/server.js +16 -26
  46. package/dist/cjs/index.js +288 -199
  47. package/dist/cjs/locale/en.js +70 -62
  48. package/dist/cjs/locale/index.js +42 -33
  49. package/dist/cjs/locale/zh.js +70 -62
  50. package/dist/cjs/plugins/analyze/constants.js +43 -36
  51. package/dist/cjs/plugins/analyze/getBundleEntry.js +90 -94
  52. package/dist/cjs/plugins/analyze/getFileSystemEntry.js +110 -137
  53. package/dist/cjs/plugins/analyze/getHtmlTemplate.js +125 -127
  54. package/dist/cjs/plugins/analyze/getServerRoutes.js +160 -164
  55. package/dist/cjs/plugins/analyze/index.js +221 -208
  56. package/dist/cjs/plugins/analyze/isDefaultExportFunction.js +81 -76
  57. package/dist/cjs/plugins/analyze/templates.js +36 -28
  58. package/dist/cjs/plugins/analyze/utils.js +109 -104
  59. package/dist/cjs/plugins/deploy/index.js +64 -56
  60. package/dist/cjs/plugins/deploy/platforms/gh-pages.js +82 -86
  61. package/dist/cjs/plugins/deploy/platforms/netlify-entry.js +35 -2
  62. package/dist/cjs/plugins/deploy/platforms/netlify-handler.js +86 -62
  63. package/dist/cjs/plugins/deploy/platforms/netlify.js +145 -157
  64. package/dist/cjs/plugins/deploy/platforms/node-entry.js +73 -45
  65. package/dist/cjs/plugins/deploy/platforms/node.js +113 -113
  66. package/dist/cjs/plugins/deploy/platforms/platform.js +17 -15
  67. package/dist/cjs/plugins/deploy/platforms/vercel-entry.js +36 -2
  68. package/dist/cjs/plugins/deploy/platforms/vercel-handler.js +87 -63
  69. package/dist/cjs/plugins/deploy/platforms/vercel.js +165 -169
  70. package/dist/cjs/plugins/deploy/utils.js +85 -85
  71. package/dist/cjs/plugins/initialize/index.js +86 -91
  72. package/dist/cjs/plugins/serverBuild.js +85 -78
  73. package/dist/cjs/plugins/serverRuntime.js +46 -34
  74. package/dist/cjs/run/index.js +86 -128
  75. package/dist/cjs/types/config/deploy.js +17 -15
  76. package/dist/cjs/types/config/dev.js +17 -15
  77. package/dist/cjs/types/config/experiments.js +17 -15
  78. package/dist/cjs/types/config/html.js +17 -15
  79. package/dist/cjs/types/config/index.js +55 -19
  80. package/dist/cjs/types/config/output.js +17 -15
  81. package/dist/cjs/types/config/performance.js +17 -15
  82. package/dist/cjs/types/config/resolve.js +17 -15
  83. package/dist/cjs/types/config/security.js +17 -15
  84. package/dist/cjs/types/config/source.js +17 -15
  85. package/dist/cjs/types/config/testing.js +17 -15
  86. package/dist/cjs/types/config/tools.js +17 -15
  87. package/dist/cjs/types/index.js +55 -23
  88. package/dist/cjs/types/plugin.js +18 -0
  89. package/dist/cjs/types/utils.js +17 -15
  90. package/dist/cjs/utils/config.js +40 -80
  91. package/dist/cjs/utils/createServer.js +46 -47
  92. package/dist/cjs/utils/env.js +41 -35
  93. package/dist/cjs/utils/generateWatchFiles.js +49 -60
  94. package/dist/cjs/utils/getConfigFile.js +46 -38
  95. package/dist/cjs/utils/getSelectedEntries.js +55 -53
  96. package/dist/cjs/utils/initAppContext.js +66 -59
  97. package/dist/cjs/utils/loadPlugins.js +77 -70
  98. package/dist/cjs/utils/printInstructions.js +39 -31
  99. package/dist/cjs/utils/register.js +108 -117
  100. package/dist/cjs/utils/restart.js +46 -41
  101. package/dist/cjs/utils/routes.js +60 -52
  102. package/dist/cjs/utils/types.js +17 -15
  103. package/dist/esm/builder/builder-rspack/index.mjs +6 -0
  104. package/dist/esm/builder/generator/adapterCopy.mjs +35 -0
  105. package/dist/esm/builder/generator/createBuilderProviderConfig.mjs +59 -0
  106. package/dist/esm/builder/generator/createCopyPattern.mjs +30 -0
  107. package/dist/esm/builder/generator/getBuilderEnvironments.mjs +56 -0
  108. package/dist/esm/builder/generator/index.mjs +45 -0
  109. package/dist/esm/builder/index.mjs +7 -0
  110. package/dist/esm/builder/shared/builderPlugins/adapterBasic.mjs +78 -0
  111. package/dist/esm/builder/shared/builderPlugins/adapterHtml.mjs +55 -0
  112. package/dist/esm/builder/shared/builderPlugins/adapterSSR.mjs +117 -0
  113. package/dist/esm/builder/shared/builderPlugins/builderHooks.mjs +17 -0
  114. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.mjs +37 -0
  115. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.mjs +22 -0
  116. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.mjs +157 -0
  117. package/dist/esm/builder/shared/createCopyInfo.mjs +15 -0
  118. package/dist/esm/builder/shared/loaders/serverModuleLoader.mjs +5 -0
  119. package/dist/esm/commands/build.mjs +68 -0
  120. package/dist/esm/commands/deploy.mjs +10 -0
  121. package/dist/esm/commands/dev.mjs +82 -0
  122. package/dist/esm/commands/index.mjs +37 -0
  123. package/dist/esm/commands/inspect.mjs +15 -0
  124. package/dist/esm/commands/serve.mjs +47 -0
  125. package/dist/esm/compat/hooks.mjs +67 -0
  126. package/dist/esm/compat/index.mjs +28 -0
  127. package/dist/esm/compat/utils.mjs +95 -0
  128. package/dist/esm/config/default.mjs +90 -0
  129. package/dist/{esm-node/config/index.js → esm/config/index.mjs} +0 -1
  130. package/dist/esm/config/initialize/index.mjs +7 -0
  131. package/dist/esm/config/initialize/inits.mjs +54 -0
  132. package/dist/esm/constants.mjs +3 -0
  133. package/dist/esm/defineConfig.mjs +2 -0
  134. package/dist/esm/esm/esbuild-loader.mjs +18 -29
  135. package/dist/esm/esm/register-esm.mjs +45 -57
  136. package/dist/esm/esm/ts-node-loader.mjs +18 -30
  137. package/dist/esm/esm/utils.mjs +31 -42
  138. package/dist/esm/index.mjs +121 -0
  139. package/dist/esm/locale/en.mjs +42 -0
  140. package/dist/esm/locale/index.mjs +9 -0
  141. package/dist/esm/locale/zh.mjs +42 -0
  142. package/dist/esm/plugins/analyze/constants.mjs +8 -0
  143. package/dist/esm/plugins/analyze/getBundleEntry.mjs +53 -0
  144. package/dist/esm/plugins/analyze/getFileSystemEntry.mjs +66 -0
  145. package/dist/esm/plugins/analyze/getHtmlTemplate.mjs +85 -0
  146. package/dist/esm/plugins/analyze/getServerRoutes.mjs +130 -0
  147. package/dist/esm/plugins/analyze/index.mjs +193 -0
  148. package/dist/esm/plugins/analyze/isDefaultExportFunction.mjs +41 -0
  149. package/dist/esm/plugins/analyze/templates.mjs +22 -0
  150. package/dist/esm/plugins/analyze/utils.mjs +55 -0
  151. package/dist/esm/plugins/deploy/index.mjs +38 -0
  152. package/dist/esm/plugins/deploy/platforms/gh-pages.mjs +43 -0
  153. package/dist/esm/plugins/deploy/platforms/netlify-entry.mjs +2 -1
  154. package/dist/esm/plugins/deploy/platforms/netlify-handler.mjs +85 -0
  155. package/dist/esm/plugins/deploy/platforms/netlify.mjs +111 -0
  156. package/dist/esm/plugins/deploy/platforms/node-entry.mjs +68 -0
  157. package/dist/esm/plugins/deploy/platforms/node.mjs +77 -0
  158. package/dist/esm/plugins/deploy/platforms/vercel-entry.mjs +3 -3
  159. package/dist/esm/plugins/deploy/platforms/vercel-handler.mjs +85 -0
  160. package/dist/esm/plugins/deploy/platforms/vercel.mjs +131 -0
  161. package/dist/esm/plugins/deploy/utils.mjs +39 -0
  162. package/dist/esm/plugins/initialize/index.mjs +59 -0
  163. package/dist/esm/plugins/serverBuild.mjs +48 -0
  164. package/dist/esm/plugins/serverRuntime.mjs +15 -0
  165. package/dist/esm/run/index.mjs +60 -0
  166. package/dist/esm/types/index.mjs +1 -0
  167. package/dist/esm/utils/config.mjs +11 -0
  168. package/dist/esm/utils/createServer.mjs +12 -0
  169. package/dist/esm/utils/env.mjs +12 -0
  170. package/dist/esm/utils/generateWatchFiles.mjs +10 -0
  171. package/dist/esm/utils/getConfigFile.mjs +5 -0
  172. package/dist/esm/utils/getSelectedEntries.mjs +26 -0
  173. package/dist/esm/utils/initAppContext.mjs +26 -0
  174. package/dist/esm/utils/loadPlugins.mjs +45 -0
  175. package/dist/esm/utils/printInstructions.mjs +9 -0
  176. package/dist/esm/utils/register.mjs +75 -0
  177. package/dist/esm/utils/restart.mjs +18 -0
  178. package/dist/esm/utils/routes.mjs +15 -0
  179. package/dist/esm-node/builder/builder-rspack/index.mjs +6 -0
  180. package/dist/esm-node/builder/generator/adapterCopy.mjs +35 -0
  181. package/dist/esm-node/builder/generator/createBuilderProviderConfig.mjs +59 -0
  182. package/dist/esm-node/builder/generator/createCopyPattern.mjs +30 -0
  183. package/dist/esm-node/builder/generator/getBuilderEnvironments.mjs +56 -0
  184. package/dist/esm-node/builder/generator/index.mjs +45 -0
  185. package/dist/esm-node/builder/index.mjs +7 -0
  186. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.mjs +78 -0
  187. package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.mjs +55 -0
  188. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.mjs +117 -0
  189. package/dist/esm-node/builder/shared/builderPlugins/builderHooks.mjs +17 -0
  190. package/dist/esm-node/builder/shared/builderPlugins/index.mjs +4 -0
  191. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.mjs +37 -0
  192. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.mjs +22 -0
  193. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.mjs +157 -0
  194. package/dist/esm-node/builder/shared/bundlerPlugins/index.mjs +3 -0
  195. package/dist/esm-node/builder/shared/createCopyInfo.mjs +15 -0
  196. package/dist/esm-node/builder/shared/index.mjs +3 -0
  197. package/dist/esm-node/builder/shared/loaders/serverModuleLoader.mjs +5 -0
  198. package/dist/esm-node/commands/build.mjs +68 -0
  199. package/dist/esm-node/commands/deploy.mjs +10 -0
  200. package/dist/esm-node/commands/dev.mjs +82 -0
  201. package/dist/esm-node/commands/index.mjs +37 -0
  202. package/dist/esm-node/commands/inspect.mjs +15 -0
  203. package/dist/esm-node/commands/serve.mjs +47 -0
  204. package/dist/esm-node/compat/hooks.mjs +67 -0
  205. package/dist/esm-node/compat/index.mjs +28 -0
  206. package/dist/esm-node/compat/utils.mjs +95 -0
  207. package/dist/esm-node/config/default.mjs +90 -0
  208. package/dist/esm-node/config/index.mjs +2 -0
  209. package/dist/esm-node/config/initialize/index.mjs +7 -0
  210. package/dist/esm-node/config/initialize/inits.mjs +54 -0
  211. package/dist/esm-node/constants.mjs +3 -0
  212. package/dist/esm-node/defineConfig.mjs +2 -0
  213. package/dist/esm-node/esm/esbuild-loader.mjs +18 -29
  214. package/dist/esm-node/esm/register-esm.mjs +45 -57
  215. package/dist/esm-node/esm/ts-node-loader.mjs +18 -30
  216. package/dist/esm-node/esm/utils.mjs +31 -42
  217. package/dist/esm-node/index.mjs +121 -0
  218. package/dist/esm-node/locale/en.mjs +42 -0
  219. package/dist/esm-node/locale/index.mjs +9 -0
  220. package/dist/esm-node/locale/zh.mjs +42 -0
  221. package/dist/esm-node/plugins/analyze/constants.mjs +8 -0
  222. package/dist/esm-node/plugins/analyze/getBundleEntry.mjs +53 -0
  223. package/dist/esm-node/plugins/analyze/getFileSystemEntry.mjs +66 -0
  224. package/dist/esm-node/plugins/analyze/getHtmlTemplate.mjs +85 -0
  225. package/dist/esm-node/plugins/analyze/getServerRoutes.mjs +130 -0
  226. package/dist/esm-node/plugins/analyze/index.mjs +193 -0
  227. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.mjs +41 -0
  228. package/dist/esm-node/plugins/analyze/{templates.js → templates.mjs} +5 -7
  229. package/dist/esm-node/plugins/analyze/utils.mjs +55 -0
  230. package/dist/esm-node/plugins/deploy/index.mjs +38 -0
  231. package/dist/esm-node/plugins/deploy/platforms/gh-pages.mjs +43 -0
  232. package/dist/esm-node/plugins/deploy/platforms/netlify-entry.mjs +2 -1
  233. package/dist/esm-node/plugins/deploy/platforms/netlify-handler.mjs +85 -0
  234. package/dist/esm-node/plugins/deploy/platforms/netlify.mjs +111 -0
  235. package/dist/esm-node/plugins/deploy/platforms/node-entry.mjs +68 -0
  236. package/dist/esm-node/plugins/deploy/platforms/node.mjs +77 -0
  237. package/dist/esm-node/plugins/deploy/platforms/vercel-entry.mjs +3 -3
  238. package/dist/esm-node/plugins/deploy/platforms/vercel-handler.mjs +85 -0
  239. package/dist/esm-node/plugins/deploy/platforms/vercel.mjs +131 -0
  240. package/dist/esm-node/plugins/deploy/utils.mjs +39 -0
  241. package/dist/esm-node/plugins/initialize/index.mjs +59 -0
  242. package/dist/esm-node/plugins/serverBuild.mjs +48 -0
  243. package/dist/esm-node/plugins/serverRuntime.mjs +15 -0
  244. package/dist/esm-node/run/index.mjs +60 -0
  245. package/dist/esm-node/types/config/index.mjs +1 -0
  246. package/dist/esm-node/types/index.mjs +1 -0
  247. package/dist/esm-node/utils/config.mjs +11 -0
  248. package/dist/esm-node/utils/createServer.mjs +12 -0
  249. package/dist/esm-node/utils/env.mjs +12 -0
  250. package/dist/esm-node/utils/generateWatchFiles.mjs +10 -0
  251. package/dist/esm-node/utils/getConfigFile.mjs +5 -0
  252. package/dist/esm-node/utils/getSelectedEntries.mjs +26 -0
  253. package/dist/esm-node/utils/initAppContext.mjs +26 -0
  254. package/dist/esm-node/utils/loadPlugins.mjs +45 -0
  255. package/dist/esm-node/utils/printInstructions.mjs +9 -0
  256. package/dist/esm-node/utils/register.mjs +75 -0
  257. package/dist/esm-node/utils/restart.mjs +18 -0
  258. package/dist/esm-node/utils/routes.mjs +15 -0
  259. package/dist/types/builder/builder-rspack/index.d.ts +1 -1
  260. package/dist/types/builder/generator/adapterCopy.d.ts +2 -3
  261. package/dist/types/builder/generator/createBuilderProviderConfig.d.ts +3 -3
  262. package/dist/types/builder/generator/createCopyPattern.d.ts +5 -5
  263. package/dist/types/builder/generator/getBuilderEnvironments.d.ts +4 -4
  264. package/dist/types/builder/generator/index.d.ts +2 -3
  265. package/dist/types/builder/index.d.ts +2 -2
  266. package/dist/types/builder/shared/builderPlugins/adapterBasic.d.ts +1 -2
  267. package/dist/types/builder/shared/builderPlugins/adapterHtml.d.ts +1 -2
  268. package/dist/types/builder/shared/builderPlugins/adapterSSR.d.ts +1 -2
  269. package/dist/types/builder/shared/builderPlugins/builderHooks.d.ts +1 -2
  270. package/dist/types/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.d.ts +4 -4
  271. package/dist/types/builder/shared/bundlerPlugins/HtmlBottomTemplate.d.ts +4 -4
  272. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +3 -5
  273. package/dist/types/builder/shared/createCopyInfo.d.ts +4 -3
  274. package/dist/types/builder/shared/loaders/serverModuleLoader.d.ts +2 -2
  275. package/dist/types/builder/shared/types.d.ts +5 -5
  276. package/dist/types/commands/build.d.ts +2 -2
  277. package/dist/types/commands/deploy.d.ts +2 -2
  278. package/dist/types/commands/dev.d.ts +2 -2
  279. package/dist/types/commands/index.d.ts +7 -9
  280. package/dist/types/commands/inspect.d.ts +2 -2
  281. package/dist/types/commands/serve.d.ts +2 -2
  282. package/dist/types/compat/hooks.d.ts +2 -2
  283. package/dist/types/compat/index.d.ts +2 -2
  284. package/dist/types/config/default.d.ts +3 -4
  285. package/dist/types/config/index.d.ts +0 -1
  286. package/dist/types/config/initialize/index.d.ts +2 -2
  287. package/dist/types/config/initialize/inits.d.ts +3 -4
  288. package/dist/types/constants.d.ts +0 -3
  289. package/dist/types/defineConfig.d.ts +7 -8
  290. package/dist/types/exports/server.d.ts +1 -5
  291. package/dist/types/index.d.ts +4 -5
  292. package/dist/types/locale/index.d.ts +1 -1
  293. package/dist/types/plugins/analyze/constants.d.ts +0 -1
  294. package/dist/types/plugins/analyze/getBundleEntry.d.ts +2 -2
  295. package/dist/types/plugins/analyze/getFileSystemEntry.d.ts +2 -2
  296. package/dist/types/plugins/analyze/getHtmlTemplate.d.ts +4 -4
  297. package/dist/types/plugins/analyze/getServerRoutes.d.ts +3 -3
  298. package/dist/types/plugins/analyze/index.d.ts +2 -4
  299. package/dist/types/plugins/deploy/index.d.ts +2 -2
  300. package/dist/types/plugins/deploy/platforms/platform.d.ts +2 -2
  301. package/dist/types/plugins/deploy/utils.d.ts +2 -2
  302. package/dist/types/plugins/initialize/index.d.ts +2 -4
  303. package/dist/types/plugins/serverBuild.d.ts +2 -2
  304. package/dist/types/plugins/serverRuntime.d.ts +2 -2
  305. package/dist/types/run/index.d.ts +3 -8
  306. package/dist/types/types/config/deploy.d.ts +0 -1
  307. package/dist/types/types/config/dev.d.ts +50 -9
  308. package/dist/types/types/config/experiments.d.ts +2 -2
  309. package/dist/types/types/config/html.d.ts +2 -2
  310. package/dist/types/types/config/index.d.ts +10 -14
  311. package/dist/types/types/config/output.d.ts +8 -8
  312. package/dist/types/types/config/performance.d.ts +2 -2
  313. package/dist/types/types/config/resolve.d.ts +2 -2
  314. package/dist/types/types/config/security.d.ts +2 -2
  315. package/dist/types/types/config/source.d.ts +2 -23
  316. package/dist/types/types/config/tools.d.ts +5 -22
  317. package/dist/types/types/index.d.ts +7 -34
  318. package/dist/types/types/{new.d.ts → plugin.d.ts} +10 -39
  319. package/dist/types/types/utils.d.ts +0 -6
  320. package/dist/types/utils/config.d.ts +1 -11
  321. package/dist/types/utils/createServer.d.ts +1 -3
  322. package/dist/types/utils/env.d.ts +2 -2
  323. package/dist/types/utils/generateWatchFiles.d.ts +2 -3
  324. package/dist/types/utils/initAppContext.d.ts +1 -3
  325. package/dist/types/utils/loadPlugins.d.ts +5 -5
  326. package/dist/types/utils/printInstructions.d.ts +2 -2
  327. package/dist/types/utils/restart.d.ts +2 -2
  328. package/dist/types/utils/routes.d.ts +2 -3
  329. package/lib/types.d.ts +5 -16
  330. package/package.json +51 -38
  331. package/rslib.config.mts +20 -0
  332. package/dist/cjs/builder/builder-webpack/index.js +0 -50
  333. package/dist/cjs/config/legacy/createHtmlConfig.js +0 -45
  334. package/dist/cjs/config/legacy/createOutputConfig.js +0 -69
  335. package/dist/cjs/config/legacy/createSourceConfig.js +0 -53
  336. package/dist/cjs/config/legacy/createToolsConfig.js +0 -52
  337. package/dist/cjs/config/legacy/index.js +0 -68
  338. package/dist/cjs/plugins/deploy/platforms/netlify-entry.mjs +0 -1
  339. package/dist/cjs/plugins/deploy/platforms/vercel-entry.mjs +0 -3
  340. package/dist/cjs/types/hooks.js +0 -16
  341. package/dist/cjs/types/legacyConfig/deploy.js +0 -16
  342. package/dist/cjs/types/legacyConfig/dev.js +0 -16
  343. package/dist/cjs/types/legacyConfig/index.js +0 -16
  344. package/dist/cjs/types/legacyConfig/output.js +0 -16
  345. package/dist/cjs/types/legacyConfig/source.js +0 -16
  346. package/dist/cjs/types/legacyConfig/testing.js +0 -16
  347. package/dist/cjs/types/legacyConfig/tools.js +0 -16
  348. package/dist/cjs/types/new.js +0 -16
  349. package/dist/cjs/utils/getUserConfig.js +0 -34
  350. package/dist/esm/builder/builder-rspack/index.js +0 -30
  351. package/dist/esm/builder/builder-webpack/index.js +0 -48
  352. package/dist/esm/builder/generator/adapterCopy.js +0 -29
  353. package/dist/esm/builder/generator/createBuilderProviderConfig.js +0 -56
  354. package/dist/esm/builder/generator/createCopyPattern.js +0 -43
  355. package/dist/esm/builder/generator/getBuilderEnvironments.js +0 -89
  356. package/dist/esm/builder/generator/index.js +0 -116
  357. package/dist/esm/builder/index.js +0 -50
  358. package/dist/esm/builder/shared/builderPlugins/adapterBasic.js +0 -92
  359. package/dist/esm/builder/shared/builderPlugins/adapterHtml.js +0 -126
  360. package/dist/esm/builder/shared/builderPlugins/adapterSSR.js +0 -262
  361. package/dist/esm/builder/shared/builderPlugins/builderHooks.js +0 -120
  362. package/dist/esm/builder/shared/builderPlugins/index.js +0 -4
  363. package/dist/esm/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -51
  364. package/dist/esm/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +0 -37
  365. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +0 -420
  366. package/dist/esm/builder/shared/bundlerPlugins/index.js +0 -3
  367. package/dist/esm/builder/shared/createCopyInfo.js +0 -14
  368. package/dist/esm/builder/shared/index.js +0 -3
  369. package/dist/esm/builder/shared/loaders/serverModuleLoader.js +0 -7
  370. package/dist/esm/commands/build.js +0 -142
  371. package/dist/esm/commands/deploy.js +0 -48
  372. package/dist/esm/commands/dev.js +0 -197
  373. package/dist/esm/commands/index.js +0 -401
  374. package/dist/esm/commands/inspect.js +0 -31
  375. package/dist/esm/commands/serve.js +0 -96
  376. package/dist/esm/compat/hooks.js +0 -503
  377. package/dist/esm/compat/index.js +0 -45
  378. package/dist/esm/compat/utils.js +0 -100
  379. package/dist/esm/config/default.js +0 -205
  380. package/dist/esm/config/index.js +0 -3
  381. package/dist/esm/config/initialize/index.js +0 -9
  382. package/dist/esm/config/initialize/inits.js +0 -89
  383. package/dist/esm/config/legacy/createHtmlConfig.js +0 -21
  384. package/dist/esm/config/legacy/createOutputConfig.js +0 -45
  385. package/dist/esm/config/legacy/createSourceConfig.js +0 -46
  386. package/dist/esm/config/legacy/createToolsConfig.js +0 -28
  387. package/dist/esm/config/legacy/index.js +0 -43
  388. package/dist/esm/constants.js +0 -12
  389. package/dist/esm/defineConfig.js +0 -16
  390. package/dist/esm/exports/server.js +0 -4
  391. package/dist/esm/index.js +0 -265
  392. package/dist/esm/locale/en.js +0 -44
  393. package/dist/esm/locale/index.js +0 -12
  394. package/dist/esm/locale/zh.js +0 -44
  395. package/dist/esm/plugins/analyze/constants.js +0 -14
  396. package/dist/esm/plugins/analyze/getBundleEntry.js +0 -108
  397. package/dist/esm/plugins/analyze/getFileSystemEntry.js +0 -268
  398. package/dist/esm/plugins/analyze/getHtmlTemplate.js +0 -251
  399. package/dist/esm/plugins/analyze/getServerRoutes.js +0 -148
  400. package/dist/esm/plugins/analyze/index.js +0 -439
  401. package/dist/esm/plugins/analyze/isDefaultExportFunction.js +0 -49
  402. package/dist/esm/plugins/analyze/templates.js +0 -6
  403. package/dist/esm/plugins/analyze/utils.js +0 -106
  404. package/dist/esm/plugins/deploy/index.js +0 -133
  405. package/dist/esm/plugins/deploy/platforms/gh-pages.js +0 -184
  406. package/dist/esm/plugins/deploy/platforms/netlify-entry.js +0 -11
  407. package/dist/esm/plugins/deploy/platforms/netlify-handler.js +0 -207
  408. package/dist/esm/plugins/deploy/platforms/netlify.js +0 -346
  409. package/dist/esm/plugins/deploy/platforms/node-entry.js +0 -110
  410. package/dist/esm/plugins/deploy/platforms/node.js +0 -178
  411. package/dist/esm/plugins/deploy/platforms/vercel-entry.js +0 -11
  412. package/dist/esm/plugins/deploy/platforms/vercel-handler.js +0 -207
  413. package/dist/esm/plugins/deploy/platforms/vercel.js +0 -280
  414. package/dist/esm/plugins/deploy/utils.js +0 -59
  415. package/dist/esm/plugins/initialize/index.js +0 -116
  416. package/dist/esm/plugins/serverBuild.js +0 -83
  417. package/dist/esm/plugins/serverRuntime.js +0 -22
  418. package/dist/esm/run/index.js +0 -134
  419. package/dist/esm/types/config/index.js +0 -1
  420. package/dist/esm/types/config/source.js +0 -0
  421. package/dist/esm/types/config/testing.js +0 -0
  422. package/dist/esm/types/config/tools.js +0 -0
  423. package/dist/esm/types/hooks.js +0 -0
  424. package/dist/esm/types/index.js +0 -3
  425. package/dist/esm/types/legacyConfig/deploy.js +0 -0
  426. package/dist/esm/types/legacyConfig/dev.js +0 -0
  427. package/dist/esm/types/legacyConfig/index.js +0 -0
  428. package/dist/esm/types/legacyConfig/output.js +0 -0
  429. package/dist/esm/types/legacyConfig/source.js +0 -0
  430. package/dist/esm/types/legacyConfig/testing.js +0 -0
  431. package/dist/esm/types/legacyConfig/tools.js +0 -0
  432. package/dist/esm/types/new.js +0 -0
  433. package/dist/esm/types/utils.js +0 -0
  434. package/dist/esm/utils/config.js +0 -122
  435. package/dist/esm/utils/createServer.js +0 -58
  436. package/dist/esm/utils/env.js +0 -16
  437. package/dist/esm/utils/generateWatchFiles.js +0 -71
  438. package/dist/esm/utils/getConfigFile.js +0 -11
  439. package/dist/esm/utils/getSelectedEntries.js +0 -67
  440. package/dist/esm/utils/getUserConfig.js +0 -32
  441. package/dist/esm/utils/initAppContext.js +0 -30
  442. package/dist/esm/utils/loadPlugins.js +0 -162
  443. package/dist/esm/utils/printInstructions.js +0 -32
  444. package/dist/esm/utils/register.js +0 -182
  445. package/dist/esm/utils/restart.js +0 -68
  446. package/dist/esm/utils/routes.js +0 -42
  447. package/dist/esm/utils/types.js +0 -0
  448. package/dist/esm-node/builder/builder-rspack/index.js +0 -8
  449. package/dist/esm-node/builder/builder-webpack/index.js +0 -16
  450. package/dist/esm-node/builder/generator/adapterCopy.js +0 -26
  451. package/dist/esm-node/builder/generator/createBuilderProviderConfig.js +0 -67
  452. package/dist/esm-node/builder/generator/createCopyPattern.js +0 -41
  453. package/dist/esm-node/builder/generator/getBuilderEnvironments.js +0 -68
  454. package/dist/esm-node/builder/generator/index.js +0 -60
  455. package/dist/esm-node/builder/index.js +0 -16
  456. package/dist/esm-node/builder/shared/builderPlugins/adapterBasic.js +0 -55
  457. package/dist/esm-node/builder/shared/builderPlugins/adapterHtml.js +0 -60
  458. package/dist/esm-node/builder/shared/builderPlugins/adapterSSR.js +0 -151
  459. package/dist/esm-node/builder/shared/builderPlugins/builderHooks.js +0 -26
  460. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +0 -30
  461. package/dist/esm-node/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +0 -31
  462. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +0 -305
  463. package/dist/esm-node/builder/shared/createCopyInfo.js +0 -14
  464. package/dist/esm-node/builder/shared/loaders/serverModuleLoader.js +0 -7
  465. package/dist/esm-node/commands/build.js +0 -67
  466. package/dist/esm-node/commands/deploy.js +0 -12
  467. package/dist/esm-node/commands/dev.js +0 -111
  468. package/dist/esm-node/commands/index.js +0 -90
  469. package/dist/esm-node/commands/inspect.js +0 -19
  470. package/dist/esm-node/commands/serve.js +0 -54
  471. package/dist/esm-node/compat/hooks.js +0 -159
  472. package/dist/esm-node/compat/index.js +0 -40
  473. package/dist/esm-node/compat/utils.js +0 -100
  474. package/dist/esm-node/config/default.js +0 -206
  475. package/dist/esm-node/config/initialize/index.js +0 -9
  476. package/dist/esm-node/config/initialize/inits.js +0 -79
  477. package/dist/esm-node/config/legacy/createHtmlConfig.js +0 -21
  478. package/dist/esm-node/config/legacy/createOutputConfig.js +0 -45
  479. package/dist/esm-node/config/legacy/createSourceConfig.js +0 -29
  480. package/dist/esm-node/config/legacy/createToolsConfig.js +0 -28
  481. package/dist/esm-node/config/legacy/index.js +0 -43
  482. package/dist/esm-node/constants.js +0 -12
  483. package/dist/esm-node/defineConfig.js +0 -13
  484. package/dist/esm-node/exports/server.js +0 -4
  485. package/dist/esm-node/index.js +0 -160
  486. package/dist/esm-node/locale/en.js +0 -44
  487. package/dist/esm-node/locale/index.js +0 -12
  488. package/dist/esm-node/locale/zh.js +0 -44
  489. package/dist/esm-node/plugins/analyze/constants.js +0 -14
  490. package/dist/esm-node/plugins/analyze/getBundleEntry.js +0 -67
  491. package/dist/esm-node/plugins/analyze/getFileSystemEntry.js +0 -108
  492. package/dist/esm-node/plugins/analyze/getHtmlTemplate.js +0 -99
  493. package/dist/esm-node/plugins/analyze/getServerRoutes.js +0 -146
  494. package/dist/esm-node/plugins/analyze/index.js +0 -184
  495. package/dist/esm-node/plugins/analyze/isDefaultExportFunction.js +0 -47
  496. package/dist/esm-node/plugins/analyze/utils.js +0 -73
  497. package/dist/esm-node/plugins/deploy/index.js +0 -44
  498. package/dist/esm-node/plugins/deploy/platforms/gh-pages.js +0 -57
  499. package/dist/esm-node/plugins/deploy/platforms/netlify-entry.js +0 -11
  500. package/dist/esm-node/plugins/deploy/platforms/netlify-handler.js +0 -73
  501. package/dist/esm-node/plugins/deploy/platforms/netlify.js +0 -133
  502. package/dist/esm-node/plugins/deploy/platforms/node-entry.js +0 -46
  503. package/dist/esm-node/plugins/deploy/platforms/node.js +0 -87
  504. package/dist/esm-node/plugins/deploy/platforms/vercel-entry.js +0 -11
  505. package/dist/esm-node/plugins/deploy/platforms/vercel-handler.js +0 -73
  506. package/dist/esm-node/plugins/deploy/platforms/vercel.js +0 -145
  507. package/dist/esm-node/plugins/deploy/utils.js +0 -55
  508. package/dist/esm-node/plugins/initialize/index.js +0 -78
  509. package/dist/esm-node/plugins/serverBuild.js +0 -56
  510. package/dist/esm-node/plugins/serverRuntime.js +0 -17
  511. package/dist/esm-node/run/index.js +0 -104
  512. package/dist/esm-node/types/index.js +0 -3
  513. package/dist/esm-node/utils/config.js +0 -49
  514. package/dist/esm-node/utils/createServer.js +0 -26
  515. package/dist/esm-node/utils/env.js +0 -16
  516. package/dist/esm-node/utils/generateWatchFiles.js +0 -30
  517. package/dist/esm-node/utils/getConfigFile.js +0 -7
  518. package/dist/esm-node/utils/getSelectedEntries.js +0 -34
  519. package/dist/esm-node/utils/getUserConfig.js +0 -10
  520. package/dist/esm-node/utils/initAppContext.js +0 -29
  521. package/dist/esm-node/utils/loadPlugins.js +0 -52
  522. package/dist/esm-node/utils/printInstructions.js +0 -11
  523. package/dist/esm-node/utils/register.js +0 -94
  524. package/dist/esm-node/utils/restart.js +0 -23
  525. package/dist/esm-node/utils/routes.js +0 -21
  526. package/dist/types/builder/builder-webpack/index.d.ts +0 -2
  527. package/dist/types/config/legacy/createHtmlConfig.d.ts +0 -2
  528. package/dist/types/config/legacy/createOutputConfig.d.ts +0 -2
  529. package/dist/types/config/legacy/createSourceConfig.d.ts +0 -2
  530. package/dist/types/config/legacy/createToolsConfig.d.ts +0 -2
  531. package/dist/types/config/legacy/index.d.ts +0 -3
  532. package/dist/types/types/hooks.d.ts +0 -69
  533. package/dist/types/types/legacyConfig/deploy.d.ts +0 -8
  534. package/dist/types/types/legacyConfig/dev.d.ts +0 -12
  535. package/dist/types/types/legacyConfig/index.d.ts +0 -35
  536. package/dist/types/types/legacyConfig/output.d.ts +0 -50
  537. package/dist/types/types/legacyConfig/source.d.ts +0 -28
  538. package/dist/types/types/legacyConfig/testing.d.ts +0 -8
  539. package/dist/types/types/legacyConfig/tools.d.ts +0 -15
  540. package/dist/types/utils/getUserConfig.d.ts +0 -6
  541. /package/dist/{esm-node/builder/shared/builderPlugins/index.js → esm/builder/shared/builderPlugins/index.mjs} +0 -0
  542. /package/dist/{esm-node/builder/shared/bundlerPlugins/index.js → esm/builder/shared/bundlerPlugins/index.mjs} +0 -0
  543. /package/dist/{esm-node/builder/shared/index.js → esm/builder/shared/index.mjs} +0 -0
  544. /package/dist/{esm-node/types/legacyConfig/output.js → esm/builder/shared/types.mjs} +0 -0
  545. /package/dist/{esm-node/types/legacyConfig/source.js → esm/exports/server.mjs} +0 -0
  546. /package/dist/{esm-node/types/legacyConfig/testing.js → esm/plugins/deploy/platforms/platform.mjs} +0 -0
  547. /package/dist/{esm-node/types/legacyConfig/tools.js → esm/types/config/deploy.mjs} +0 -0
  548. /package/dist/{esm-node/types/new.js → esm/types/config/dev.mjs} +0 -0
  549. /package/dist/{esm-node/types/utils.js → esm/types/config/experiments.mjs} +0 -0
  550. /package/dist/{esm-node/utils/types.js → esm/types/config/html.mjs} +0 -0
  551. /package/dist/{esm-node/types/config/index.js → esm/types/config/index.mjs} +0 -0
  552. /package/dist/esm/{builder/shared/types.js → types/config/output.mjs} +0 -0
  553. /package/dist/esm/{plugins/deploy/platforms/platform.js → types/config/performance.mjs} +0 -0
  554. /package/dist/esm/types/config/{deploy.js → resolve.mjs} +0 -0
  555. /package/dist/esm/types/config/{dev.js → security.mjs} +0 -0
  556. /package/dist/esm/types/config/{experiments.js → source.mjs} +0 -0
  557. /package/dist/esm/types/config/{html.js → testing.mjs} +0 -0
  558. /package/dist/esm/types/config/{output.js → tools.mjs} +0 -0
  559. /package/dist/esm/types/{config/performance.js → plugin.mjs} +0 -0
  560. /package/dist/esm/types/{config/resolve.js → utils.mjs} +0 -0
  561. /package/dist/esm/{types/config/security.js → utils/types.mjs} +0 -0
  562. /package/dist/esm-node/builder/shared/{types.js → types.mjs} +0 -0
  563. /package/dist/esm-node/{plugins/deploy/platforms/platform.js → exports/server.mjs} +0 -0
  564. /package/dist/esm-node/{types/config/deploy.js → plugins/deploy/platforms/platform.mjs} +0 -0
  565. /package/dist/esm-node/types/config/{dev.js → deploy.mjs} +0 -0
  566. /package/dist/esm-node/types/config/{experiments.js → dev.mjs} +0 -0
  567. /package/dist/esm-node/types/config/{html.js → experiments.mjs} +0 -0
  568. /package/dist/esm-node/types/config/{output.js → html.mjs} +0 -0
  569. /package/dist/esm-node/types/config/{performance.js → output.mjs} +0 -0
  570. /package/dist/esm-node/types/config/{resolve.js → performance.mjs} +0 -0
  571. /package/dist/esm-node/types/config/{security.js → resolve.mjs} +0 -0
  572. /package/dist/esm-node/types/config/{source.js → security.mjs} +0 -0
  573. /package/dist/esm-node/types/config/{testing.js → source.mjs} +0 -0
  574. /package/dist/esm-node/types/config/{tools.js → testing.mjs} +0 -0
  575. /package/dist/esm-node/types/{hooks.js → config/tools.mjs} +0 -0
  576. /package/dist/esm-node/types/{legacyConfig/deploy.js → plugin.mjs} +0 -0
  577. /package/dist/esm-node/types/{legacyConfig/dev.js → utils.mjs} +0 -0
  578. /package/dist/esm-node/{types/legacyConfig/index.js → utils/types.mjs} +0 -0
@@ -0,0 +1,78 @@
1
+ import { SERVICE_WORKER_ENVIRONMENT_NAME } from "@modern-js/builder";
2
+ const builderPluginAdapterBasic = (options)=>({
3
+ name: 'builder-plugin-adapter-modern-basic',
4
+ setup (api) {
5
+ api.modifyBundlerChain((chain, { target, CHAIN_ID, environment })=>{
6
+ const isServiceWorker = environment.name === SERVICE_WORKER_ENVIRONMENT_NAME;
7
+ if ('node' === target || isServiceWorker) applyNodeCompat(isServiceWorker, chain);
8
+ if ('web' === target) {
9
+ const bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
10
+ chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
11
+ chain.module.rule('bare-server-module').test(bareServerModuleReg).use('server-module-loader').loader(require.resolve('../loaders/serverModuleLoader'));
12
+ }
13
+ const { appContext } = options;
14
+ const { metaName } = appContext;
15
+ chain.watchOptions({
16
+ ignored: [
17
+ `[\\\\/](?:node_modules(?![\\\\/]\\.${metaName})|.git)[\\\\/]`
18
+ ]
19
+ });
20
+ });
21
+ }
22
+ });
23
+ function applyNodeCompat(isServiceWorker, chain) {
24
+ const nodeExts = [
25
+ '.node.js',
26
+ '.node.jsx',
27
+ '.node.ts',
28
+ '.node.tsx',
29
+ '.node.mjs',
30
+ '.server.js',
31
+ '.server.jsx',
32
+ '.server.ts',
33
+ '.server.tsx',
34
+ '.server.mjs'
35
+ ];
36
+ const webWorkerExts = [
37
+ '.worker.js',
38
+ '.worker.jsx',
39
+ '.worker.ts',
40
+ '.worker.tsx'
41
+ ];
42
+ for (const ext of nodeExts)chain.resolve.extensions.prepend(ext);
43
+ if (isServiceWorker) for (const ext of webWorkerExts)chain.resolve.extensions.prepend(ext);
44
+ const extensionAlias = {
45
+ '.js': [
46
+ '.node.js',
47
+ '.server.js',
48
+ '.js'
49
+ ],
50
+ '.jsx': [
51
+ '.node.jsx',
52
+ '.server.jsx',
53
+ '.jsx'
54
+ ],
55
+ '.ts': [
56
+ '.node.ts',
57
+ '.server.ts',
58
+ '.ts'
59
+ ],
60
+ '.tsx': [
61
+ '.node.tsx',
62
+ '.server.tsx',
63
+ '.tsx'
64
+ ],
65
+ '.mjs': [
66
+ '.node.mjs',
67
+ '.server.mjs',
68
+ '.mjs'
69
+ ],
70
+ '.json': [
71
+ '.node.json',
72
+ '.server.json',
73
+ '.json'
74
+ ]
75
+ };
76
+ chain.resolve.extensionAlias.merge(extensionAlias);
77
+ }
78
+ export { builderPluginAdapterBasic };
@@ -0,0 +1,55 @@
1
+ import { isHtmlDisabled } from "@modern-js/builder";
2
+ import { removeTailSlash } from "@modern-js/utils";
3
+ import { template } from "@modern-js/utils/lodash";
4
+ import { BottomTemplatePlugin } from "../bundlerPlugins/index.mjs";
5
+ const createVirtualModule = (content)=>`data:text/javascript;charset=utf-8,${encodeURIComponent(content)}`;
6
+ const builderPluginAdapterHtml = (options)=>({
7
+ name: 'builder-plugin-adapter-modern-html',
8
+ setup (api) {
9
+ api.modifyBundlerChain(async (chain, { CHAIN_ID, target, HtmlPlugin: HtmlBundlerPlugin, environment })=>{
10
+ const builderConfig = environment.config;
11
+ if (!isHtmlDisabled(builderConfig, target)) {
12
+ applyBottomHtmlPlugin({
13
+ options,
14
+ chain,
15
+ CHAIN_ID,
16
+ HtmlBundlerPlugin,
17
+ htmlPaths: environment.htmlPaths
18
+ });
19
+ await injectAssetPrefix({
20
+ chain
21
+ });
22
+ }
23
+ });
24
+ }
25
+ });
26
+ async function injectAssetPrefix({ chain }) {
27
+ const entries = chain.entryPoints.entries() || {};
28
+ const entryNames = Object.keys(entries);
29
+ const assetPrefix = removeTailSlash(chain.output.get('publicPath') || '');
30
+ const code = `window.__assetPrefix__ = '${assetPrefix}';`;
31
+ entryNames.forEach((entryName)=>{
32
+ entries[entryName].prepend(createVirtualModule(code));
33
+ });
34
+ }
35
+ function applyBottomHtmlPlugin({ chain, options, CHAIN_ID, HtmlBundlerPlugin, htmlPaths }) {
36
+ const { normalizedConfig: modernConfig, appContext } = options;
37
+ for (const entryName of Object.keys(htmlPaths)){
38
+ const baseTemplateParams = {
39
+ entryName,
40
+ title: modernConfig.html.title,
41
+ mountId: modernConfig.html.templateParameters
42
+ };
43
+ chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args)=>[
44
+ {
45
+ ...args[0] || {},
46
+ __internal__: true,
47
+ bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && template(appContext.htmlTemplates[`__${entryName}-bottom__`])(baseTemplateParams)
48
+ }
49
+ ]);
50
+ }
51
+ chain.plugin('bottom-template').use(BottomTemplatePlugin, [
52
+ HtmlBundlerPlugin
53
+ ]);
54
+ }
55
+ export { builderPluginAdapterHtml };
@@ -0,0 +1,117 @@
1
+ import { resolve, sep } from "path";
2
+ import { SERVICE_WORKER_ENVIRONMENT_NAME, isHtmlDisabled } from "@modern-js/builder";
3
+ import { fs, isUseRsc, isUseSSRBundle } from "@modern-js/utils";
4
+ import { mergeRsbuildConfig } from "@rsbuild/core";
5
+ import { getServerCombinedModueFile } from "../../../plugins/analyze/utils.mjs";
6
+ import { HtmlAsyncChunkPlugin, RouterPlugin } from "../bundlerPlugins/index.mjs";
7
+ const builderPluginAdapterSSR = (options)=>({
8
+ name: 'builder-plugin-adapter-modern-ssr',
9
+ setup (api) {
10
+ const { normalizedConfig } = options;
11
+ api.modifyRsbuildConfig((config)=>mergeRsbuildConfig(config, {
12
+ html: {
13
+ inject: isStreamingSSR(normalizedConfig) ? 'head' : void 0
14
+ },
15
+ server: {
16
+ compress: isStreamingSSR(normalizedConfig) || isUseRsc(normalizedConfig) ? false : void 0
17
+ }
18
+ }));
19
+ api.modifyBundlerChain(async (chain, { target, isProd, HtmlPlugin: HtmlBundlerPlugin, isServer, environment })=>{
20
+ const builderConfig = environment.config;
21
+ const { normalizedConfig } = options;
22
+ applyRouterPlugin(chain, 'route-plugin', options, HtmlBundlerPlugin);
23
+ const isServiceWorker = environment.name === SERVICE_WORKER_ENVIRONMENT_NAME;
24
+ if ('node' === target || isServiceWorker) applyFilterEntriesBySSRConfig({
25
+ isProd,
26
+ chain,
27
+ appNormalizedConfig: normalizedConfig
28
+ });
29
+ if (isUseSSRBundle(normalizedConfig) || isUseRsc(normalizedConfig)) {
30
+ await applySSRLoaderEntry(chain, options, isServer);
31
+ applySSRDataLoader(chain, options);
32
+ }
33
+ if (!isHtmlDisabled(builderConfig, target)) applyAsyncChunkHtmlPlugin({
34
+ chain,
35
+ modernConfig: options.normalizedConfig,
36
+ HtmlBundlerPlugin
37
+ });
38
+ });
39
+ }
40
+ });
41
+ const isStreamingSSR = (userConfig)=>{
42
+ const isStreaming = (ssr)=>{
43
+ if (!ssr) return false;
44
+ if ('boolean' == typeof ssr) return ssr;
45
+ return 'string' !== ssr.mode;
46
+ };
47
+ const { server } = userConfig;
48
+ if (isStreaming(server.ssr)) return true;
49
+ if (server?.ssrByEntries && 'object' == typeof server.ssrByEntries) {
50
+ for (const name of Object.keys(server.ssrByEntries))if (isStreaming(server.ssrByEntries[name])) return true;
51
+ }
52
+ return false;
53
+ };
54
+ function applyAsyncChunkHtmlPlugin({ chain, modernConfig, HtmlBundlerPlugin }) {
55
+ if (isStreamingSSR(modernConfig) || isUseRsc(modernConfig)) chain.plugin('html-async-chunk').use(HtmlAsyncChunkPlugin, [
56
+ HtmlBundlerPlugin
57
+ ]);
58
+ }
59
+ function applyRouterPlugin(chain, pluginName, options, HtmlBundlerPlugin) {
60
+ const { appContext, normalizedConfig } = options;
61
+ const { entrypoints } = appContext;
62
+ const existNestedRoutes = entrypoints.some((entrypoint)=>entrypoint.nestedRoutesEntry);
63
+ const workerSSR = Boolean(normalizedConfig.deploy.worker?.ssr);
64
+ const { enableInlineRouteManifests, disableInlineRouteManifests } = normalizedConfig.output;
65
+ const inlineRouteManifests = disableInlineRouteManifests ? !disableInlineRouteManifests : enableInlineRouteManifests;
66
+ if (existNestedRoutes || workerSSR) chain.plugin(pluginName).use(RouterPlugin, [
67
+ {
68
+ HtmlBundlerPlugin,
69
+ enableInlineRouteManifests: inlineRouteManifests,
70
+ staticJsDir: normalizedConfig.output?.distPath?.js,
71
+ disableFilenameHash: normalizedConfig.output?.filenameHash === false,
72
+ scriptLoading: normalizedConfig.html?.scriptLoading,
73
+ nonce: normalizedConfig.security?.nonce
74
+ }
75
+ ]);
76
+ }
77
+ function applyFilterEntriesBySSRConfig({ isProd, chain, appNormalizedConfig }) {
78
+ const { server: serverConfig, output: outputConfig } = appNormalizedConfig;
79
+ const entries = chain.entryPoints.entries();
80
+ if (isProd && (outputConfig?.ssg === true || 'function' == typeof outputConfig?.ssg)) return;
81
+ if (void 0 === entries) throw new Error('No entry found, one of src/routes/layout.tsx, src/App.tsx, src/index.tsx is required');
82
+ const entryNames = Object.keys(entries);
83
+ if (isProd && 1 === entryNames.length && outputConfig?.ssg) return;
84
+ const ssgEntries = [];
85
+ if (isProd && outputConfig?.ssgByEntries) {
86
+ const { ssgByEntries } = outputConfig;
87
+ entryNames.forEach((name)=>{
88
+ if (ssgByEntries[name]) ssgEntries.push(name);
89
+ });
90
+ }
91
+ const { ssr, ssrByEntries } = serverConfig || {};
92
+ entryNames.forEach((name)=>{
93
+ if (!serverConfig?.rsc && !ssgEntries.includes(name) && !name.includes('server-loaders') && (ssr && ssrByEntries?.[name] === false || !ssr && !ssrByEntries?.[name])) chain.entryPoints.delete(name);
94
+ });
95
+ }
96
+ async function applySSRLoaderEntry(chain, optinos, isServer) {
97
+ const { appContext } = optinos;
98
+ const { internalDirectory } = appContext;
99
+ const { entrypoints } = appContext;
100
+ await Promise.all(entrypoints.map(async (entrypoint)=>{
101
+ const { entryName } = entrypoint;
102
+ const serverLoadersFile = getServerCombinedModueFile(internalDirectory, entryName);
103
+ if (isServer) try {
104
+ await fs.access(serverLoadersFile, fs.constants.F_OK);
105
+ chain.entry(`${entryName}-server-loaders`).add(serverLoadersFile);
106
+ } catch (err) {}
107
+ }));
108
+ }
109
+ function applySSRDataLoader(chain, options) {
110
+ const { normalizedConfig, appContext } = options;
111
+ const { appDirectory } = appContext;
112
+ const { entriesDir = './src' } = normalizedConfig.source;
113
+ const absolutePath = resolve(appDirectory, entriesDir).split(sep).join('(\\\\|/)');
114
+ const reg = new RegExp(`${absolutePath}.*\\.(loader|data|data.client)\\.[t|j]sx?$`);
115
+ chain.module.rule('ssr-data-loader').test(reg).use('data-loader').loader(require.resolve('@modern-js/plugin-data-loader/loader')).end();
116
+ }
117
+ export { builderPluginAdapterSSR };
@@ -0,0 +1,17 @@
1
+ const builderPluginAdapterHooks = (options)=>({
2
+ name: 'builder-plugin-support-modern-hooks',
3
+ setup (api) {
4
+ const _internalContext = options.appContext._internalContext;
5
+ const hooks = _internalContext.pluginAPI?.getHooks();
6
+ api.modifyBundlerChain(async (chain, utils)=>{
7
+ await hooks?.modifyBundlerChain.call(chain, utils);
8
+ });
9
+ api.modifyRsbuildConfig(async (config, utils)=>{
10
+ await hooks?.modifyRsbuildConfig.call(config, utils);
11
+ });
12
+ api.modifyRspackConfig(async (config, utils)=>{
13
+ await hooks?.modifyRspackConfig.call(config, utils);
14
+ });
15
+ }
16
+ });
17
+ export { builderPluginAdapterHooks };
@@ -0,0 +1,4 @@
1
+ export * from "./adapterBasic.mjs";
2
+ export * from "./adapterHtml.mjs";
3
+ export * from "./adapterSSR.mjs";
4
+ export * from "./builderHooks.mjs";
@@ -0,0 +1,37 @@
1
+ import { RUNTIME_CHUNK_REGEX } from "@modern-js/builder";
2
+ class HtmlAsyncChunkPlugin {
3
+ apply(compiler) {
4
+ compiler.hooks.compilation.tap(this.name, (compilation)=>{
5
+ const hooks = this.htmlWebpackPlugin.getHooks(compilation);
6
+ hooks.alterAssetTagGroups.tap(this.name, (assets)=>{
7
+ const headTags = [];
8
+ const bodyTags = [];
9
+ const processScriptTag = (tag)=>{
10
+ const { attributes } = tag;
11
+ if (attributes && true === attributes.defer) {
12
+ attributes.async = true;
13
+ delete attributes.defer;
14
+ }
15
+ const src = attributes?.src;
16
+ const isRuntimeChunk = src && RUNTIME_CHUNK_REGEX.test(src);
17
+ return isRuntimeChunk ? bodyTags : headTags;
18
+ };
19
+ for (const tag of [
20
+ ...assets.headTags,
21
+ ...assets.bodyTags
22
+ ])if ("script" === tag.tagName) processScriptTag(tag).push(tag);
23
+ else (assets.headTags.includes(tag) ? headTags : bodyTags).push(tag);
24
+ return {
25
+ ...assets,
26
+ headTags,
27
+ bodyTags
28
+ };
29
+ });
30
+ });
31
+ }
32
+ constructor(htmlWebpackPlugin){
33
+ this.name = 'HtmlAsyncChunkPlugin';
34
+ this.htmlWebpackPlugin = htmlWebpackPlugin;
35
+ }
36
+ }
37
+ export { HtmlAsyncChunkPlugin };
@@ -0,0 +1,22 @@
1
+ class BottomTemplatePlugin {
2
+ apply(compiler) {
3
+ compiler.hooks.compilation.tap(this.name, (compilation)=>{
4
+ this.htmlWebpackPlugin.getHooks(compilation).beforeEmit.tap(this.name, (data)=>{
5
+ if (!data.plugin.options?.__internal__) return data;
6
+ if (this.bottomTemplateReg.test(data.html)) {
7
+ data.html = data.html.replace(this.bottomTemplateReg, '');
8
+ const { bottomTemplate } = data.plugin.options;
9
+ if (bottomTemplate) data.html = data.html.replace(this.bodyRegExp, (match)=>`\n${bottomTemplate}\n${match}`);
10
+ }
11
+ return data;
12
+ });
13
+ });
14
+ }
15
+ constructor(htmlWebpackPlugin){
16
+ this.bottomTemplateReg = /<!--<\?-\s*bottomTemplate\s*\?>-->/;
17
+ this.bodyRegExp = /(<\/\s*body\s*>)/i;
18
+ this.htmlWebpackPlugin = htmlWebpackPlugin;
19
+ this.name = 'bottom-template';
20
+ }
21
+ }
22
+ export { BottomTemplatePlugin };
@@ -0,0 +1,157 @@
1
+ import { createHash } from "crypto";
2
+ import { ROUTE_MANIFEST_FILE } from "@modern-js/utils";
3
+ import { merge, mergeWith } from "@modern-js/utils/lodash";
4
+ import { ROUTE_MANIFEST } from "@modern-js/utils/universal/constants";
5
+ const PLUGIN_NAME = 'ModernjsRoutePlugin';
6
+ const generateContentHash = (content)=>createHash('md5').update(content).digest('hex').slice(0, 8);
7
+ class RouterPlugin {
8
+ isTargetNodeOrWebWorker(target) {
9
+ if ('node' === target || Array.isArray(target) && target.includes('node')) return true;
10
+ if ('webworker' === target || Array.isArray(target) && target.includes('webworker')) return true;
11
+ return false;
12
+ }
13
+ getEntryChunks(compilation, chunks) {
14
+ const entrypointsArray = Array.from(compilation.entrypoints.entries());
15
+ const entryChunkIds = entrypointsArray.map((entrypoint)=>entrypoint[0]);
16
+ const entryChunks = [
17
+ ...chunks
18
+ ].filter((chunk)=>chunk.names?.some((name)=>entryChunkIds.includes(name)));
19
+ return entryChunks;
20
+ }
21
+ getEntryChunkFiles(entryChunks) {
22
+ return entryChunks.map((chunk)=>[
23
+ ...chunk.files || []
24
+ ].find((fname)=>fname.includes('.js')));
25
+ }
26
+ apply(compiler) {
27
+ const { target } = compiler.options;
28
+ if (this.isTargetNodeOrWebWorker(target)) return;
29
+ const { rspack } = compiler;
30
+ const { Compilation, sources } = rspack;
31
+ const { RawSource } = sources;
32
+ const normalizePath = (path)=>{
33
+ if (!path.endsWith('/')) return `${path}/`;
34
+ return path;
35
+ };
36
+ const chunksToHtmlName = new Map();
37
+ const ROUTE_MANIFEST_HOLDER = "route-manifest";
38
+ const placeholder = `<!--<?- ${ROUTE_MANIFEST_HOLDER} ?>-->`;
39
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation)=>{
40
+ this.HtmlBundlerPlugin.getHooks(compilation).beforeEmit.tapAsync('RouterManifestPlugin', (data, callback)=>{
41
+ const { outputName } = data;
42
+ const { chunks } = data.plugin.options;
43
+ chunksToHtmlName.set(chunks, outputName);
44
+ data.html = data.html.replace("<\/script>", `</script>${placeholder}`);
45
+ callback(null, data);
46
+ });
47
+ compilation.hooks.processAssets.tapPromise({
48
+ name: PLUGIN_NAME,
49
+ stage: Compilation.PROCESS_ASSETS_STAGE_REPORT
50
+ }, async ()=>{
51
+ const stats = compilation.getStats().toJson({
52
+ all: false,
53
+ publicPath: true,
54
+ assets: true,
55
+ chunkGroups: true,
56
+ chunks: true,
57
+ ids: true
58
+ });
59
+ const { publicPath, chunks = [], namedChunkGroups } = stats;
60
+ const routeAssets = {};
61
+ if (!namedChunkGroups) return;
62
+ const prevManifestAsset = compilation.getAsset(ROUTE_MANIFEST_FILE);
63
+ const prevManifestStr = prevManifestAsset ? prevManifestAsset.source.source().toString() : JSON.stringify({
64
+ routeAssets: {}
65
+ });
66
+ const prevManifest = JSON.parse(prevManifestStr);
67
+ const asyncEntryNames = [];
68
+ for (const [name, chunkGroup] of Object.entries(namedChunkGroups)){
69
+ if (name.startsWith('async-')) asyncEntryNames.push(name);
70
+ const assets = chunkGroup.assets.map((asset)=>{
71
+ const filename = asset.name;
72
+ return publicPath ? normalizePath(publicPath) + filename : filename;
73
+ });
74
+ const referenceCssAssets = assets.filter((asset)=>/\.css$/.test(asset));
75
+ routeAssets[name] = {
76
+ chunkIds: chunkGroup.chunks,
77
+ assets,
78
+ referenceCssAssets
79
+ };
80
+ if (prevManifest.routeAssets[name]) mergeWith(routeAssets[name], prevManifest.routeAssets[name], (obj, source)=>{
81
+ if (Array.isArray(obj)) return obj.concat(source);
82
+ return Object.assign(source, obj);
83
+ });
84
+ }
85
+ if (asyncEntryNames.length > 0) for (const asyncEntryName of asyncEntryNames){
86
+ const syncEntryName = asyncEntryName.replace('async-', '');
87
+ const syncEntry = routeAssets[syncEntryName];
88
+ const asyncEntry = routeAssets[asyncEntryName];
89
+ merge(syncEntry, asyncEntry);
90
+ }
91
+ const manifest = {
92
+ routeAssets
93
+ };
94
+ const entryNames = Array.from(compilation.entrypoints.keys());
95
+ let entryChunks = [];
96
+ entryChunks = this.getEntryChunks(compilation, chunks);
97
+ const entryChunkFiles = this.getEntryChunkFiles(entryChunks);
98
+ const entryChunkFileIds = entryChunks.map((chunk)=>chunk.id);
99
+ for(let i = 0; i < entryChunkFiles.length; i++){
100
+ const entryName = entryNames[i];
101
+ const file = entryChunkFiles[i];
102
+ const chunkNames = entryChunks[i].names;
103
+ const chunkId = entryChunkFileIds[i];
104
+ const asset = compilation.assets[file];
105
+ if (!asset || !chunkId) continue;
106
+ let relatedAssets = {};
107
+ if (entryChunkFiles.length > 1) Object.keys(routeAssets).forEach((routeId)=>{
108
+ const segments = routeId.split('_');
109
+ const chunkName = segments[0];
110
+ if (chunkNames?.includes(chunkName)) relatedAssets[routeId] = routeAssets[routeId];
111
+ });
112
+ else relatedAssets = routeAssets;
113
+ const manifest = {
114
+ routeAssets: relatedAssets
115
+ };
116
+ const injectedContent = `
117
+ ;(function(){
118
+ window.${ROUTE_MANIFEST} = ${JSON.stringify(manifest, (k, v)=>{
119
+ if (('assets' === k || 'referenceCssAssets' === k) && Array.isArray(v)) return v.map((item)=>item.replace(publicPath, ''));
120
+ return v;
121
+ })};
122
+ })();
123
+ `;
124
+ let htmlName;
125
+ for (const [chunks, name] of chunksToHtmlName.entries())if (Array.isArray(chunkNames) && Array.isArray(chunks) && chunkNames.every((value, index)=>value === chunks[index])) {
126
+ htmlName = name;
127
+ break;
128
+ }
129
+ const oldHtml = compilation.assets[htmlName];
130
+ const { enableInlineRouteManifests, disableFilenameHash, staticJsDir, scriptLoading, nonce } = this;
131
+ const nonceAttr = nonce ? `nonce="${nonce}"` : '';
132
+ if (oldHtml) if (enableInlineRouteManifests) compilation.updateAsset(htmlName, new RawSource(oldHtml.source().toString().replace(placeholder, `<script ${nonceAttr}>${injectedContent}</script>`)), void 0);
133
+ else {
134
+ const scriptPath = `${staticJsDir}/${ROUTE_MANIFEST_HOLDER}-${entryName}${disableFilenameHash ? '.js' : `.${generateContentHash(injectedContent)}.js`}`;
135
+ const scriptUrl = `${publicPath}${scriptPath}`;
136
+ const scriptLoadingAttr = 'defer' === scriptLoading ? scriptLoading : 'module' === scriptLoading ? 'type="module"' : '';
137
+ const script = `<script ${scriptLoadingAttr} ${nonceAttr} src="${scriptUrl}"></script>`;
138
+ compilation.updateAsset(htmlName, new RawSource(oldHtml.source().toString().replace(placeholder, script)), void 0);
139
+ compilation.emitAsset(scriptPath, new RawSource(injectedContent));
140
+ }
141
+ }
142
+ if (prevManifestAsset) compilation.updateAsset(ROUTE_MANIFEST_FILE, new RawSource(JSON.stringify(manifest, null, 2)), void 0);
143
+ else compilation.emitAsset(ROUTE_MANIFEST_FILE, new RawSource(JSON.stringify(manifest, null, 2)));
144
+ });
145
+ });
146
+ }
147
+ constructor({ staticJsDir = 'static/js', HtmlBundlerPlugin, enableInlineRouteManifests, disableFilenameHash = false, scriptLoading = 'defer', nonce }){
148
+ this.name = 'RouterPlugin';
149
+ this.HtmlBundlerPlugin = HtmlBundlerPlugin;
150
+ this.enableInlineRouteManifests = enableInlineRouteManifests;
151
+ this.staticJsDir = staticJsDir;
152
+ this.disableFilenameHash = disableFilenameHash;
153
+ this.scriptLoading = scriptLoading;
154
+ this.nonce = nonce;
155
+ }
156
+ }
157
+ export { RouterPlugin };
@@ -0,0 +1,3 @@
1
+ export * from "./HtmlAsyncChunkPlugin.mjs";
2
+ export * from "./HtmlBottomTemplate.mjs";
3
+ export * from "./RouterPlugin.mjs";
@@ -0,0 +1,15 @@
1
+ import path from "path";
2
+ import { resolvePublicDirPaths } from "@modern-js/server-core";
3
+ function createCopyInfo(appContext, config) {
4
+ const configDir = path.resolve(appContext.appDirectory, config.source.configDir || './config');
5
+ const uploadDir = path.posix.join(configDir.replace(/\\/g, '/'), 'upload');
6
+ const publicDir = path.posix.join(configDir.replace(/\\/g, '/'), 'public');
7
+ const customPublicDirPaths = resolvePublicDirPaths(config.server?.publicDir, appContext.appDirectory);
8
+ return {
9
+ configDir,
10
+ uploadDir,
11
+ publicDir,
12
+ customPublicDirs: customPublicDirPaths
13
+ };
14
+ }
15
+ export { createCopyInfo };
@@ -0,0 +1,3 @@
1
+ export * from "./types.mjs";
2
+ export * from "./builderPlugins/index.mjs";
3
+ export * from "./createCopyInfo.mjs";
@@ -0,0 +1,5 @@
1
+ function loader() {
2
+ return "module.exports = {}";
3
+ }
4
+ const serverModuleLoader = loader;
5
+ export { serverModuleLoader as default };
@@ -0,0 +1,68 @@
1
+ import { fs, logger } from "@modern-js/utils";
2
+ import { loadServerPlugins } from "../utils/loadPlugins.mjs";
3
+ import { registerCompiler } from "../utils/register.mjs";
4
+ import { generateRoutes } from "../utils/routes.mjs";
5
+ import * as __rspack_external_node_path_c5b9b54f from "node:path";
6
+ async function copyEnvFiles(appDirectory, distDirectory) {
7
+ try {
8
+ const files = await fs.readdir(appDirectory);
9
+ const envFileRegex = /^\.env(\.[a-zA-Z0-9_-]+)*$/;
10
+ const envFiles = files.filter((file)=>envFileRegex.test(file));
11
+ if (0 === envFiles.length) return void logger.debug('No .env files found to copy');
12
+ const copyPromises = envFiles.map(async (envFile)=>{
13
+ const sourcePath = __rspack_external_node_path_c5b9b54f["default"].resolve(appDirectory, envFile);
14
+ const targetPath = __rspack_external_node_path_c5b9b54f["default"].resolve(distDirectory, envFile);
15
+ try {
16
+ const stat = await fs.stat(sourcePath);
17
+ if (stat.isDirectory()) return;
18
+ await fs.copy(sourcePath, targetPath);
19
+ } catch (error) {
20
+ logger.warn(`Failed to copy ${envFile}:`, error);
21
+ }
22
+ });
23
+ await Promise.all(copyPromises);
24
+ } catch (error) {
25
+ logger.warn('Failed to copy .env files:', error);
26
+ }
27
+ }
28
+ const build = async (api, options)=>{
29
+ if (options?.analyze) process.env.BUNDLE_ANALYZE = 'true';
30
+ const resolvedConfig = api.getNormalizedConfig();
31
+ const appContext = api.getAppContext();
32
+ const hooks = api.getHooks();
33
+ const combinedAlias = [].concat(resolvedConfig?.resolve?.alias ?? []).concat(resolvedConfig?.source?.alias ?? []);
34
+ await loadServerPlugins(api, appContext.appDirectory, appContext.metaName);
35
+ if (appContext.moduleType && 'module' === appContext.moduleType) {
36
+ const { registerEsm } = await import("../esm/register-esm.mjs");
37
+ await registerEsm({
38
+ appDir: appContext.appDirectory,
39
+ distDir: appContext.distDirectory,
40
+ alias: {}
41
+ });
42
+ }
43
+ await registerCompiler(appContext.appDirectory, appContext.distDirectory, combinedAlias);
44
+ const { apiOnly } = appContext;
45
+ if (apiOnly) {
46
+ await hooks.onBeforeBuild.call({
47
+ environments: {},
48
+ bundlerConfigs: void 0,
49
+ isFirstCompile: false,
50
+ isWatch: false
51
+ });
52
+ await generateRoutes(appContext);
53
+ await hooks.onAfterBuild.call({
54
+ environments: {},
55
+ stats: void 0,
56
+ isFirstCompile: false,
57
+ isWatch: false
58
+ });
59
+ return;
60
+ }
61
+ logger.info('Starting production build...');
62
+ if (!appContext.builder) throw new Error('Expect the Builder to have been initialized, But the appContext.builder received `undefined`');
63
+ await appContext.builder.onAfterBuild(async ()=>copyEnvFiles(appContext.appDirectory, appContext.distDirectory));
64
+ await appContext.builder.build({
65
+ watch: options?.watch
66
+ });
67
+ };
68
+ export { build };
@@ -0,0 +1,10 @@
1
+ import { getServerPlugins } from "../utils/loadPlugins.mjs";
2
+ const deploy = async (api, options)=>{
3
+ const hooks = api.getHooks();
4
+ const { metaName } = api.getAppContext();
5
+ await getServerPlugins(api, metaName);
6
+ await hooks.onBeforeDeploy.call(options);
7
+ await hooks.deploy.call();
8
+ await hooks.onAfterDeploy.call(options);
9
+ };
10
+ export { deploy };