@modern-js/app-tools 2.3.1-alpha.2 → 3.0.0-beta.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 (175) hide show
  1. package/CHANGELOG.md +87 -0
  2. package/README.md +14 -18
  3. package/dist/js/modern/analyze/getServerRoutes.js +5 -2
  4. package/dist/js/modern/analyze/index.js +47 -46
  5. package/dist/js/modern/builder/builder-rspack/index.js +8 -0
  6. package/dist/js/modern/builder/builder-webpack/builderPlugins/compatModern.js +41 -0
  7. package/dist/js/modern/builder/builder-webpack/index.js +93 -0
  8. package/dist/js/modern/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +4 -1
  9. package/dist/js/modern/builder/builder-webpack/webpackPlugins/index.js +1 -0
  10. package/dist/js/modern/builder/generator/createBuilderOptions.js +24 -0
  11. package/dist/js/modern/builder/generator/createBuilderProviderConfig.js +39 -0
  12. package/dist/js/modern/builder/generator/getBuilderTargets.js +21 -0
  13. package/dist/js/modern/builder/generator/index.js +53 -0
  14. package/dist/js/modern/builder/index.js +13 -133
  15. package/dist/js/modern/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +102 -116
  16. package/dist/js/modern/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +27 -0
  17. package/dist/js/modern/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +34 -0
  18. package/dist/js/modern/builder/{share.js → shared/createCopyPattern.js} +0 -0
  19. package/dist/js/modern/builder/shared/index.js +3 -0
  20. package/dist/js/modern/builder/{loaders → shared/loaders}/serverModuleLoader.js +0 -0
  21. package/dist/js/modern/builder/shared/types.js +0 -0
  22. package/dist/js/modern/config/default.js +2 -2
  23. package/dist/js/modern/config/index.js +3 -8
  24. package/dist/js/modern/config/initialize/index.js +12 -0
  25. package/dist/js/modern/config/{initial → initialize}/inits.js +4 -2
  26. package/dist/js/modern/config/{initial → legacy}/createHtmlConfig.js +0 -0
  27. package/dist/js/modern/config/{initial → legacy}/createOutputConfig.js +0 -0
  28. package/dist/js/modern/config/{initial → legacy}/createSourceConfig.js +0 -0
  29. package/dist/js/modern/config/{initial → legacy}/createToolsConfig.js +0 -0
  30. package/dist/js/modern/config/{initial/transformNormalizedConfig.js → legacy/index.js} +4 -0
  31. package/dist/js/modern/index.js +18 -8
  32. package/dist/js/modern/initialize/index.js +36 -28
  33. package/dist/js/modern/locale/zh.js +1 -1
  34. package/dist/js/modern/types/utils.js +0 -0
  35. package/dist/js/node/analyze/getServerRoutes.js +3 -1
  36. package/dist/js/node/analyze/index.js +48 -47
  37. package/dist/js/node/builder/builder-rspack/index.js +31 -0
  38. package/dist/js/node/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  39. package/dist/js/node/builder/builder-webpack/index.js +118 -0
  40. package/dist/js/node/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +10 -5
  41. package/dist/js/node/builder/builder-webpack/webpackPlugins/index.js +17 -0
  42. package/dist/js/node/builder/generator/createBuilderOptions.js +47 -0
  43. package/dist/js/node/builder/generator/createBuilderProviderConfig.js +60 -0
  44. package/dist/js/node/builder/generator/getBuilderTargets.js +39 -0
  45. package/dist/js/node/builder/generator/index.js +82 -0
  46. package/dist/js/node/builder/index.js +14 -123
  47. package/dist/js/node/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +107 -120
  48. package/dist/js/node/builder/{webpackPlugins/htmlAsyncChunkPlugin.js → shared/bundlerPlugins/HtmlAsyncChunkPlugin.js} +17 -20
  49. package/dist/js/node/builder/{webpackPlugins/htmlBottomTemplate.js → shared/bundlerPlugins/HtmlBottomTemplate.js} +21 -24
  50. package/dist/js/node/builder/{share.js → shared/createCopyPattern.js} +3 -3
  51. package/dist/js/node/builder/shared/index.js +19 -0
  52. package/dist/js/node/builder/{loaders → shared/loaders}/serverModuleLoader.js +0 -0
  53. package/dist/js/node/builder/shared/types.js +15 -0
  54. package/dist/js/node/config/default.js +2 -2
  55. package/dist/js/node/config/index.js +4 -19
  56. package/dist/js/node/config/{initial → initialize}/index.js +10 -16
  57. package/dist/js/node/config/{initial → initialize}/inits.js +4 -2
  58. package/dist/js/node/config/{initial → legacy}/createHtmlConfig.js +0 -0
  59. package/dist/js/node/config/{initial → legacy}/createOutputConfig.js +0 -0
  60. package/dist/js/node/config/{initial → legacy}/createSourceConfig.js +0 -0
  61. package/dist/js/node/config/{initial → legacy}/createToolsConfig.js +0 -0
  62. package/dist/js/node/config/{initial/transformNormalizedConfig.js → legacy/index.js} +8 -3
  63. package/dist/js/node/index.js +18 -8
  64. package/dist/js/node/initialize/index.js +35 -28
  65. package/dist/js/node/locale/zh.js +1 -1
  66. package/dist/js/node/types/utils.js +15 -0
  67. package/dist/js/treeshaking/analyze/generateCode.js +14 -14
  68. package/dist/js/treeshaking/analyze/getBundleEntry.js +2 -2
  69. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +1 -1
  70. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +1 -1
  71. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +1 -1
  72. package/dist/js/treeshaking/analyze/getServerRoutes.js +8 -6
  73. package/dist/js/treeshaking/analyze/index.js +142 -137
  74. package/dist/js/treeshaking/analyze/nestedRoutes.js +5 -5
  75. package/dist/js/treeshaking/analyze/templates.js +6 -6
  76. package/dist/js/treeshaking/analyze/utils.js +3 -3
  77. package/dist/js/treeshaking/builder/builder-rspack/index.js +6 -0
  78. package/dist/js/treeshaking/builder/builder-webpack/builderPlugins/compatModern.js +64 -0
  79. package/dist/js/treeshaking/builder/builder-webpack/index.js +301 -0
  80. package/dist/js/treeshaking/builder/{webpackPlugins/routerPlugin.js → builder-webpack/webpackPlugins/RouterPlugin.js} +6 -3
  81. package/dist/js/treeshaking/builder/builder-webpack/webpackPlugins/index.js +1 -0
  82. package/dist/js/treeshaking/builder/generator/createBuilderOptions.js +41 -0
  83. package/dist/js/treeshaking/builder/generator/createBuilderProviderConfig.js +70 -0
  84. package/dist/js/treeshaking/builder/generator/getBuilderTargets.js +16 -0
  85. package/dist/js/treeshaking/builder/generator/index.js +199 -0
  86. package/dist/js/treeshaking/builder/index.js +29 -228
  87. package/dist/js/treeshaking/builder/{builderPlugins/compatModern.js → shared/builderPlugins/adapterModern.js} +138 -142
  88. package/dist/js/treeshaking/builder/{webpackPlugins/htmlAsyncChunkPlugin.js → shared/bundlerPlugins/HtmlAsyncChunkPlugin.js} +0 -0
  89. package/dist/js/treeshaking/builder/{webpackPlugins/htmlBottomTemplate.js → shared/bundlerPlugins/HtmlBottomTemplate.js} +2 -2
  90. package/dist/js/treeshaking/builder/{share.js → shared/createCopyPattern.js} +0 -0
  91. package/dist/js/treeshaking/builder/shared/index.js +3 -0
  92. package/dist/js/treeshaking/builder/{loaders → shared/loaders}/serverModuleLoader.js +0 -0
  93. package/dist/js/treeshaking/builder/shared/types.js +1 -0
  94. package/dist/js/treeshaking/commands/dev.js +2 -2
  95. package/dist/js/treeshaking/commands/serve.js +2 -2
  96. package/dist/js/treeshaking/config/default.js +2 -2
  97. package/dist/js/treeshaking/config/index.js +3 -3
  98. package/dist/js/treeshaking/config/initialize/index.js +10 -0
  99. package/dist/js/treeshaking/config/{initial → initialize}/inits.js +6 -4
  100. package/dist/js/treeshaking/config/legacy/createHtmlConfig.js +19 -0
  101. package/dist/js/treeshaking/config/{initial → legacy}/createOutputConfig.js +1 -1
  102. package/dist/js/treeshaking/config/{initial → legacy}/createSourceConfig.js +1 -1
  103. package/dist/js/treeshaking/config/{initial → legacy}/createToolsConfig.js +1 -1
  104. package/dist/js/treeshaking/config/{initial/transformNormalizedConfig.js → legacy/index.js} +4 -1
  105. package/dist/js/treeshaking/index.js +19 -12
  106. package/dist/js/treeshaking/initialize/index.js +36 -28
  107. package/dist/js/treeshaking/locale/zh.js +1 -1
  108. package/dist/js/treeshaking/types/utils.js +1 -0
  109. package/dist/js/treeshaking/utils/config.js +2 -2
  110. package/dist/js/treeshaking/utils/getServerInternalPlugins.js +2 -2
  111. package/dist/types/analyze/generateCode.d.ts +1 -1
  112. package/dist/types/analyze/getBundleEntry.d.ts +1 -1
  113. package/dist/types/analyze/getFileSystemEntry.d.ts +1 -1
  114. package/dist/types/analyze/getHtmlTemplate.d.ts +2 -2
  115. package/dist/types/analyze/getServerRoutes.d.ts +1 -1
  116. package/dist/types/analyze/index.d.ts +5 -1
  117. package/dist/types/builder/builder-rspack/index.d.ts +2 -0
  118. package/dist/types/builder/{builderPlugins → builder-webpack/builderPlugins}/compatModern.d.ts +2 -2
  119. package/dist/types/builder/builder-webpack/index.d.ts +4 -0
  120. package/dist/types/builder/{webpackPlugins/routerPlugin.d.ts → builder-webpack/webpackPlugins/RouterPlugin.d.ts} +1 -1
  121. package/dist/types/builder/builder-webpack/webpackPlugins/index.d.ts +1 -0
  122. package/dist/types/builder/generator/createBuilderOptions.d.ts +3 -0
  123. package/dist/types/builder/generator/createBuilderProviderConfig.d.ts +2 -0
  124. package/dist/types/builder/generator/getBuilderTargets.d.ts +3 -0
  125. package/dist/types/builder/generator/index.d.ts +17 -0
  126. package/dist/types/builder/index.d.ts +1 -18
  127. package/dist/types/builder/shared/builderPlugins/adapterModern.d.ts +13 -0
  128. package/dist/types/builder/{webpackPlugins/htmlAsyncChunkPlugin.d.ts → shared/bundlerPlugins/HtmlAsyncChunkPlugin.d.ts} +2 -1
  129. package/dist/types/builder/{webpackPlugins/htmlBottomTemplate.d.ts → shared/bundlerPlugins/HtmlBottomTemplate.d.ts} +2 -1
  130. package/dist/types/builder/{share.d.ts → shared/createCopyPattern.d.ts} +1 -1
  131. package/dist/types/builder/shared/index.d.ts +3 -0
  132. package/dist/types/builder/shared/loaders/serverModuleLoader.d.ts +4 -0
  133. package/dist/types/builder/shared/types.d.ts +16 -0
  134. package/dist/types/commands/build.d.ts +1 -1
  135. package/dist/types/commands/deploy.d.ts +1 -1
  136. package/dist/types/commands/dev.d.ts +1 -1
  137. package/dist/types/commands/inspect.d.ts +1 -1
  138. package/dist/types/commands/serve.d.ts +1 -1
  139. package/dist/types/config/default.d.ts +1 -1
  140. package/dist/types/config/index.d.ts +3 -2
  141. package/dist/types/config/initialize/index.d.ts +2 -0
  142. package/dist/types/config/{initial → initialize}/inits.d.ts +3 -3
  143. package/dist/types/config/{initial → legacy}/createHtmlConfig.d.ts +1 -1
  144. package/dist/types/config/{initial → legacy}/createOutputConfig.d.ts +1 -1
  145. package/dist/types/config/{initial → legacy}/createSourceConfig.d.ts +1 -1
  146. package/dist/types/config/{initial → legacy}/createToolsConfig.d.ts +1 -1
  147. package/dist/types/config/legacy/index.d.ts +3 -0
  148. package/dist/types/defineConfig.d.ts +2 -2
  149. package/dist/types/index.d.ts +7 -3
  150. package/dist/types/initialize/index.d.ts +6 -2
  151. package/dist/types/types/config/deploy.d.ts +1 -2
  152. package/dist/types/types/config/dev.d.ts +2 -3
  153. package/dist/types/types/config/experiments.d.ts +1 -2
  154. package/dist/types/types/config/html.d.ts +5 -3
  155. package/dist/types/types/config/index.d.ts +41 -48
  156. package/dist/types/types/config/output.d.ts +8 -3
  157. package/dist/types/types/config/performance.d.ts +6 -3
  158. package/dist/types/types/config/security.d.ts +3 -3
  159. package/dist/types/types/config/source.d.ts +7 -3
  160. package/dist/types/types/config/tools.d.ts +10 -4
  161. package/dist/types/types/hooks.d.ts +6 -4
  162. package/dist/types/types/index.d.ts +19 -7
  163. package/dist/types/types/utils.d.ts +7 -0
  164. package/dist/types/utils/config.d.ts +1 -1
  165. package/dist/types/utils/getServerInternalPlugins.d.ts +1 -1
  166. package/dist/types/utils/printInstructions.d.ts +1 -1
  167. package/package.json +34 -25
  168. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +0 -30
  169. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +0 -37
  170. package/dist/js/modern/config/initial/index.js +0 -16
  171. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +0 -19
  172. package/dist/js/treeshaking/config/initial/index.js +0 -12
  173. package/dist/types/builder/loaders/serverModuleLoader.d.ts +0 -3
  174. package/dist/types/config/initial/index.d.ts +0 -4
  175. package/dist/types/config/initial/transformNormalizedConfig.d.ts +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,92 @@
1
1
  # @modern-js/app-tools
2
2
 
3
+ ## 3.0.0-beta.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 840142c: fix: the `@modern-js/app-tools` hooks should set `webpack` as default type.
8
+ fix: `@modern-js/app-tools` hooks 应该将 'webpack' 设置为默认类型
9
+ - 11c053b: feat: ssr support deploy worker
10
+
11
+ feat: ssr 支持边缘部署
12
+
13
+ - Updated dependencies [c4c10e7]
14
+ - Updated dependencies [84c21f9]
15
+ - Updated dependencies [11c053b]
16
+ - Updated dependencies [28e7dc6]
17
+ - @modern-js/builder@2.4.1-beta.0
18
+ - @modern-js/builder-rspack-provider@2.5.0-beta.0
19
+ - @modern-js/builder-shared@2.5.0-beta.0
20
+ - @modern-js/builder-webpack-provider@2.5.0-beta.0
21
+ - @modern-js/builder-plugin-node-polyfill@2.4.1-beta.0
22
+ - @modern-js/prod-server@2.4.1-beta.0
23
+ - @modern-js/utils@2.4.1-beta.0
24
+ - @modern-js/builder-plugin-esbuild@2.4.1-beta.0
25
+ - @modern-js/core@2.4.1-beta.0
26
+ - @modern-js/plugin-data-loader@2.4.1-beta.0
27
+ - @modern-js/server@2.4.1-beta.0
28
+ - @modern-js/plugin-i18n@2.4.1-beta.0
29
+ - @modern-js/plugin-lint@2.4.1-beta.0
30
+ - @modern-js/new-action@2.4.1-beta.0
31
+ - @modern-js/node-bundle-require@2.4.1-beta.0
32
+ - @modern-js/upgrade@2.4.1-beta.0
33
+
34
+ ## 2.4.0
35
+
36
+ ### Minor Changes
37
+
38
+ - e84d16b: feat: support catch-all routing
39
+ feat: 支持通配路由
40
+ - a914be8: feat: modern-js support rspack bundler
41
+ feat: modern-js 支持 rspack 构建工具
42
+
43
+ ### Patch Changes
44
+
45
+ - 6f83037: fix: change the builder resolve plugin
46
+ fix: 修复 builder resolve 插件
47
+ - b4e01e7: chore: rename MWA to Web App
48
+
49
+ chore: 将 MWA 重命名为 Web App
50
+
51
+ - 8c2db5f: feat(core): improve support for exporting a function in config file
52
+
53
+ feat(core): 完善对配置文件中导出函数的支持
54
+
55
+ - 3144625: fix: sub root route should be matched by a splat route
56
+ fix: 子根路由应该被通配路由匹配
57
+ - c53a0ff: fix: lazy import `rspack-provider`
58
+ fix: 懒加载 `rspack-provider`
59
+ - Updated dependencies [d19484c]
60
+ - Updated dependencies [637f16b]
61
+ - Updated dependencies [6f83037]
62
+ - Updated dependencies [014d06b]
63
+ - Updated dependencies [98a2733]
64
+ - Updated dependencies [b3f2a7e]
65
+ - Updated dependencies [a5572b8]
66
+ - Updated dependencies [91db54e]
67
+ - Updated dependencies [a914be8]
68
+ - Updated dependencies [67b5a42]
69
+ - Updated dependencies [48b036e]
70
+ - Updated dependencies [8c2db5f]
71
+ - @modern-js/server@2.4.0
72
+ - @modern-js/builder-webpack-provider@2.4.0
73
+ - @modern-js/builder-rspack-provider@2.4.0
74
+ - @modern-js/builder-shared@2.4.0
75
+ - @modern-js/builder@2.4.0
76
+ - @modern-js/node-bundle-require@2.4.0
77
+ - @modern-js/utils@2.4.0
78
+ - @modern-js/core@2.4.0
79
+ - @modern-js/builder-plugin-esbuild@2.4.0
80
+ - @modern-js/builder-plugin-node-polyfill@2.4.0
81
+ - @modern-js/new-action@2.4.0
82
+ - @modern-js/plugin-data-loader@2.4.0
83
+ - @modern-js/plugin-i18n@2.4.0
84
+ - @modern-js/plugin-lint@2.4.0
85
+ - @modern-js/prod-server@2.4.0
86
+ - @modern-js/upgrade@2.4.0
87
+ - @modern-js/plugin@2.4.0
88
+ - @modern-js/types@2.4.0
89
+
3
90
  ## 2.3.0
4
91
 
5
92
  ### Patch Changes
package/README.md CHANGED
@@ -1,30 +1,26 @@
1
-
2
1
  <p align="center">
3
2
  <a href="https://modernjs.dev" target="blank"><img src="https://lf3-static.bytednsdoc.com/obj/eden-cn/ylaelkeh7nuhfnuhf/modernjs-cover.png" width="300" alt="Modern.js Logo" /></a>
4
3
  </p>
4
+
5
+ <h1 align="center">Modern.js</h1>
6
+
5
7
  <p align="center">
6
- 现代 Web 工程体系
7
- <br/>
8
- <a href="https://modernjs.dev" target="blank">
9
- modernjs.dev
10
- </a>
11
- </p>
12
- <p align="center">
13
- The meta-framework suite designed from scratch for frontend-focused modern web development
8
+ A Progressive React Framework for modern web development.
14
9
  </p>
15
10
 
16
- # Introduction
17
-
18
- > The doc site ([modernjs.dev](https://modernjs.dev)) and articles are only available in Chinese for now, we are planning to add English versions soon.
11
+ ## Getting Started
19
12
 
20
- - [Modern.js: Hello, World!](https://zhuanlan.zhihu.com/p/426707646)
13
+ Please follow [Quick Start](https://modernjs.dev/en/guides/get-started/quick-start) to get started with Modern.js.
21
14
 
22
- ## Getting Started
15
+ ## Documentation
23
16
 
24
- - [Quick Start](https://modernjs.dev/docs/start)
25
- - [Guides](https://modernjs.dev/docs/guides)
26
- - [API References](https://modernjs.dev/docs/apis)
17
+ - [English Documentation](https://modernjs.dev/en/)
18
+ - [中文文档](https://modernjs.dev)
27
19
 
28
20
  ## Contributing
29
21
 
30
- - [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md)
22
+ Please read the [Contributing Guide](https://github.com/modern-js-dev/modern.js/blob/main/CONTRIBUTING.md).
23
+
24
+ ## License
25
+
26
+ Modern.js is [MIT licensed](https://github.com/modern-js-dev/modern.js/blob/main/LICENSE).
@@ -38,7 +38,8 @@ import {
38
38
  getEntryOptions,
39
39
  SERVER_BUNDLE_DIRECTORY,
40
40
  MAIN_ENTRY_NAME,
41
- removeTailSlash
41
+ removeTailSlash,
42
+ SERVER_WORKER_BUNDLE_DIRECTORY
42
43
  } from "@modern-js/utils";
43
44
  import { walkDirectory } from "./utils";
44
45
  const applyBaseUrl = (baseUrl, routes) => {
@@ -101,7 +102,7 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
101
102
  const {
102
103
  html: { disableHtmlFolder },
103
104
  output: { distPath: { html: htmlPath } = {} },
104
- server: { baseUrl, routes, ssr, ssrByEntries }
105
+ server: { baseUrl, routes, ssr, ssrByEntries, worker }
105
106
  } = config;
106
107
  const { packageName } = appContext;
107
108
  let htmlRoutes = entrypoints.reduce(
@@ -113,6 +114,7 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
113
114
  packageName
114
115
  );
115
116
  const isSSR = Boolean(entryOptions);
117
+ const isWorker = Boolean(worker);
116
118
  const { resHeaders } = (routes == null ? void 0 : routes[entryName]) || {};
117
119
  let route = {
118
120
  urlPath: `/${entryName === MAIN_ENTRY_NAME ? "" : entryName}`,
@@ -125,6 +127,7 @@ const collectHtmlRoutes = (entrypoints, appContext, config) => {
125
127
  isSPA: true,
126
128
  isSSR,
127
129
  responseHeaders: resHeaders,
130
+ worker: isWorker ? `${SERVER_WORKER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0,
128
131
  bundle: isSSR ? `${SERVER_BUNDLE_DIRECTORY}/${entryName}.js` : void 0
129
132
  };
130
133
  if (routes == null ? void 0 : routes.hasOwnProperty(entryName)) {
@@ -49,12 +49,12 @@ import {
49
49
  isDevCommand
50
50
  } from "@modern-js/utils";
51
51
  import { cloneDeep } from "@modern-js/utils/lodash";
52
- import { createBuilderForModern } from "../builder";
53
52
  import { printInstructions } from "../utils/printInstructions";
54
53
  import { generateRoutes } from "../utils/routes";
55
54
  import { emitResolvedConfig } from "../utils/config";
56
55
  import { getSelectedEntries } from "../utils/getSelectedEntries";
57
56
  import { initialNormalizedConfig } from "../config";
57
+ import { createBuilderGenerator } from "../builder";
58
58
  import {
59
59
  getServerLoadersFile,
60
60
  isPageComponentFile,
@@ -67,7 +67,9 @@ import {
67
67
  APP_INIT_IMPORTED
68
68
  } from "./constants";
69
69
  const debug = createDebugger("plugin-analyze");
70
- var analyze_default = () => ({
70
+ var analyze_default = ({
71
+ bundler
72
+ }) => ({
71
73
  name: "@modern-js/plugin-analyze",
72
74
  setup: (api) => {
73
75
  let pagesDir = [];
@@ -159,56 +161,55 @@ var analyze_default = () => ({
159
161
  if (buildCommands.includes(command)) {
160
162
  let _b;
161
163
  const normalizedConfig = api.useResolvedConfigContext();
164
+ const createBuilderForModern = yield createBuilderGenerator(bundler);
162
165
  const builder = yield createBuilderForModern({
163
166
  normalizedConfig,
164
167
  appContext,
165
- compatPluginConfig: {
166
- onBeforeBuild(_0) {
167
- return __async(this, arguments, function* ({ bundlerConfigs }) {
168
- const hookRunners2 = api.useHookRunners();
169
- yield generateRoutes(appContext);
170
- yield hookRunners2.beforeBuild({ bundlerConfigs });
168
+ onBeforeBuild(_0) {
169
+ return __async(this, arguments, function* ({ bundlerConfigs }) {
170
+ const hookRunners2 = api.useHookRunners();
171
+ yield generateRoutes(appContext);
172
+ yield hookRunners2.beforeBuild({
173
+ bundlerConfigs
171
174
  });
172
- },
173
- onAfterBuild(_0) {
174
- return __async(this, arguments, function* ({ stats }) {
175
- const hookRunners2 = api.useHookRunners();
176
- yield hookRunners2.afterBuild({ stats });
177
- yield emitResolvedConfig(
178
- appContext.appDirectory,
179
- normalizedConfig
180
- );
181
- });
182
- },
183
- onDevCompileDone(_0) {
184
- return __async(this, arguments, function* ({ isFirstCompile }) {
185
- const hookRunners2 = api.useHookRunners();
186
- if (process.stdout.isTTY || isFirstCompile) {
187
- hookRunners2.afterDev();
188
- if (isFirstCompile) {
189
- printInstructions(
190
- hookRunners2,
191
- appContext,
192
- normalizedConfig
193
- );
194
- }
175
+ });
176
+ },
177
+ onAfterBuild(_0) {
178
+ return __async(this, arguments, function* ({ stats }) {
179
+ const hookRunners2 = api.useHookRunners();
180
+ yield hookRunners2.afterBuild({ stats });
181
+ yield emitResolvedConfig(
182
+ appContext.appDirectory,
183
+ normalizedConfig
184
+ );
185
+ });
186
+ },
187
+ onDevCompileDone(_0) {
188
+ return __async(this, arguments, function* ({ isFirstCompile }) {
189
+ const hookRunners2 = api.useHookRunners();
190
+ if (process.stdout.isTTY || isFirstCompile) {
191
+ hookRunners2.afterDev();
192
+ if (isFirstCompile) {
193
+ printInstructions(hookRunners2, appContext, normalizedConfig);
195
194
  }
195
+ }
196
+ });
197
+ },
198
+ onBeforeCreateCompiler(_0) {
199
+ return __async(this, arguments, function* ({ bundlerConfigs }) {
200
+ const hookRunners2 = api.useHookRunners();
201
+ yield hookRunners2.beforeCreateCompiler({
202
+ bundlerConfigs
196
203
  });
197
- },
198
- onBeforeCreateCompiler(_0) {
199
- return __async(this, arguments, function* ({ bundlerConfigs }) {
200
- const hookRunners2 = api.useHookRunners();
201
- yield hookRunners2.beforeCreateCompiler({
202
- bundlerConfigs
203
- });
204
- });
205
- },
206
- onAfterCreateCompiler(_0) {
207
- return __async(this, arguments, function* ({ compiler }) {
208
- const hookRunners2 = api.useHookRunners();
209
- yield hookRunners2.afterCreateCompiler({ compiler });
204
+ });
205
+ },
206
+ onAfterCreateCompiler(_0) {
207
+ return __async(this, arguments, function* ({ compiler }) {
208
+ const hookRunners2 = api.useHookRunners();
209
+ yield hookRunners2.afterCreateCompiler({
210
+ compiler
210
211
  });
211
- }
212
+ });
212
213
  }
213
214
  });
214
215
  builder.addPlugins(resolvedConfig.builderPlugins);
@@ -251,7 +252,7 @@ var analyze_default = () => ({
251
252
  },
252
253
  resolvedConfig({ resolved }) {
253
254
  const appContext = api.useAppContext();
254
- const config = initialNormalizedConfig(resolved, appContext);
255
+ const config = initialNormalizedConfig(resolved, appContext, bundler);
255
256
  return {
256
257
  resolved: config
257
258
  };
@@ -0,0 +1,8 @@
1
+ import { builderRspackProvider } from "@modern-js/builder-rspack-provider";
2
+ import { generateBuilder } from "../generator";
3
+ function createRspackBuilderForModern(options) {
4
+ return generateBuilder(options, builderRspackProvider);
5
+ }
6
+ export {
7
+ createRspackBuilderForModern
8
+ };
@@ -0,0 +1,41 @@
1
+ import { join } from "path";
2
+ import { createCopyPattern } from "../../shared";
3
+ import { RouterPlugin } from "../webpackPlugins";
4
+ const PluginCompatModern = (options) => ({
5
+ name: "builder-plugin-compat-modern",
6
+ setup(api) {
7
+ const { normalizedConfig: modernConfig, appContext } = options;
8
+ api.modifyWebpackChain((chain, { CHAIN_ID }) => {
9
+ var _a;
10
+ chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
11
+ if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
12
+ const defaultCopyPattern = createCopyPattern(
13
+ appContext,
14
+ modernConfig,
15
+ "public",
16
+ chain
17
+ );
18
+ chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
19
+ var _a2;
20
+ return [
21
+ {
22
+ patterns: [...((_a2 = args[0]) == null ? void 0 : _a2.patterns) || [], defaultCopyPattern]
23
+ }
24
+ ];
25
+ });
26
+ }
27
+ const { entrypoints } = appContext;
28
+ const existNestedRoutes = entrypoints.some(
29
+ (entrypoint) => entrypoint.nestedRoutesEntry
30
+ );
31
+ const routerConfig = (_a = modernConfig == null ? void 0 : modernConfig.runtime) == null ? void 0 : _a.router;
32
+ const routerManifest = Boolean(routerConfig == null ? void 0 : routerConfig.manifest);
33
+ if (existNestedRoutes || routerManifest) {
34
+ chain.plugin("route-plugin").use(RouterPlugin);
35
+ }
36
+ });
37
+ }
38
+ });
39
+ export {
40
+ PluginCompatModern
41
+ };
@@ -0,0 +1,93 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+ import {
41
+ builderWebpackProvider
42
+ } from "@modern-js/builder-webpack-provider";
43
+ import { applyOptionsChain } from "@modern-js/utils";
44
+ import { createCopyPattern } from "../shared";
45
+ import { generateBuilder } from "../generator";
46
+ import { PluginCompatModern } from "./builderPlugins/compatModern";
47
+ function createWebpackBuilderForModern(options) {
48
+ return generateBuilder(options, builderWebpackProvider, {
49
+ modifyBuilderConfig(config) {
50
+ modifyOutputConfig(config, options.appContext);
51
+ },
52
+ modifyBuilderInstance(builder) {
53
+ return __async(this, null, function* () {
54
+ yield applyBuilderPlugins(builder, options);
55
+ });
56
+ }
57
+ });
58
+ }
59
+ function modifyOutputConfig(config, appContext) {
60
+ config.output = createOutputConfig(config, appContext);
61
+ function createOutputConfig(config2, appContext2) {
62
+ const defaultCopyPattern = createCopyPattern(appContext2, config2, "upload");
63
+ const { copy } = config2.output;
64
+ const copyOptions = Array.isArray(copy) ? copy : copy == null ? void 0 : copy.patterns;
65
+ const builderCopy = [...copyOptions || [], defaultCopyPattern];
66
+ return __spreadProps(__spreadValues({}, config2.output), {
67
+ copy: builderCopy
68
+ });
69
+ }
70
+ }
71
+ function applyBuilderPlugins(builder, options) {
72
+ return __async(this, null, function* () {
73
+ const { normalizedConfig } = options;
74
+ if (!normalizedConfig.output.disableNodePolyfill) {
75
+ const { PluginNodePolyfill } = yield import("@modern-js/builder-plugin-node-polyfill");
76
+ builder.addPlugins([PluginNodePolyfill()]);
77
+ }
78
+ if (normalizedConfig.tools.esbuild) {
79
+ const { esbuild: esbuildOptions } = normalizedConfig.tools;
80
+ const { PluginEsbuild } = yield import("@modern-js/builder-plugin-esbuild");
81
+ builder.addPlugins([
82
+ PluginEsbuild({
83
+ loader: false,
84
+ minimize: applyOptionsChain({}, esbuildOptions)
85
+ })
86
+ ]);
87
+ }
88
+ builder.addPlugins([PluginCompatModern(options)]);
89
+ });
90
+ }
91
+ export {
92
+ createWebpackBuilderForModern
93
+ };
@@ -32,6 +32,9 @@ class RouterPlugin {
32
32
  if (target === "node" || Array.isArray(target) && target.includes("node")) {
33
33
  return;
34
34
  }
35
+ if (target === "webworker" || Array.isArray(target) && target.includes("webworker")) {
36
+ return;
37
+ }
35
38
  const { webpack } = compiler;
36
39
  const { Compilation, sources } = webpack;
37
40
  const { RawSource } = sources;
@@ -109,5 +112,5 @@ class RouterPlugin {
109
112
  }
110
113
  }
111
114
  export {
112
- RouterPlugin as default
115
+ RouterPlugin
113
116
  };
@@ -0,0 +1 @@
1
+ export * from "./RouterPlugin";
@@ -0,0 +1,24 @@
1
+ function createBuilderOptions(target, appContext) {
2
+ const entries = {};
3
+ const { entrypoints = [], checkedEntries } = appContext;
4
+ for (const { entryName, entry } of entrypoints) {
5
+ if (checkedEntries && !checkedEntries.includes(entryName)) {
6
+ continue;
7
+ }
8
+ if (entryName in entries) {
9
+ entries[entryName].push(entry);
10
+ } else {
11
+ entries[entryName] = [entry];
12
+ }
13
+ }
14
+ return {
15
+ cwd: appContext.appDirectory,
16
+ target,
17
+ configPath: appContext.configFile || void 0,
18
+ entry: entries,
19
+ framework: appContext.metaName
20
+ };
21
+ }
22
+ export {
23
+ createBuilderOptions
24
+ };
@@ -0,0 +1,39 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ function createBuilderProviderConfig(resolveConfig, appContext, modifyBuilderConfig) {
21
+ const htmlConfig = __spreadValues({}, resolveConfig.html);
22
+ if (!htmlConfig.template) {
23
+ htmlConfig.templateByEntries = __spreadValues(__spreadValues({}, htmlConfig.templateByEntries), appContext.htmlTemplates);
24
+ }
25
+ const config = __spreadProps(__spreadValues({}, resolveConfig), {
26
+ dev: __spreadProps(__spreadValues({}, resolveConfig.dev), {
27
+ port: appContext.port
28
+ }),
29
+ html: htmlConfig,
30
+ output: __spreadProps(__spreadValues({}, resolveConfig.output), {
31
+ cleanDistPath: false
32
+ })
33
+ });
34
+ modifyBuilderConfig == null ? void 0 : modifyBuilderConfig(config);
35
+ return config;
36
+ }
37
+ export {
38
+ createBuilderProviderConfig
39
+ };
@@ -0,0 +1,21 @@
1
+ import {
2
+ isProd,
3
+ isServiceWorker,
4
+ isSSR,
5
+ isUseSSRBundle
6
+ } from "@modern-js/utils";
7
+ function getBuilderTargets(normalizedConfig) {
8
+ const targets = ["web"];
9
+ const useNodeTarget = isProd() ? isUseSSRBundle(normalizedConfig) : isSSR(normalizedConfig);
10
+ if (useNodeTarget) {
11
+ targets.push("node");
12
+ }
13
+ const useWorkerTarget = isProd() ? isServiceWorker(normalizedConfig) : false;
14
+ if (useWorkerTarget) {
15
+ targets.push("service-worker");
16
+ }
17
+ return targets;
18
+ }
19
+ export {
20
+ getBuilderTargets
21
+ };
@@ -0,0 +1,53 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+ import { createBuilder } from "@modern-js/builder";
22
+ import { createBuilderProviderConfig } from "./createBuilderProviderConfig";
23
+ import { getBuilderTargets } from "./getBuilderTargets";
24
+ import { createBuilderOptions } from "./createBuilderOptions";
25
+ function generateBuilder(options, generateProvider, utils) {
26
+ return __async(this, null, function* () {
27
+ const { normalizedConfig, appContext } = options;
28
+ const { modifyBuilderConfig, modifyBuilderInstance } = utils || {};
29
+ const builderConfig = createBuilderProviderConfig(
30
+ normalizedConfig,
31
+ appContext,
32
+ modifyBuilderConfig
33
+ );
34
+ const provider = generateProvider({
35
+ builderConfig
36
+ });
37
+ const target = getBuilderTargets(normalizedConfig);
38
+ const builderOptions = createBuilderOptions(target, appContext);
39
+ const builder = yield createBuilder(provider, builderOptions);
40
+ yield applyBuilderPlugins(builder, options);
41
+ yield modifyBuilderInstance == null ? void 0 : modifyBuilderInstance(builder);
42
+ return builder;
43
+ });
44
+ }
45
+ function applyBuilderPlugins(builder, options) {
46
+ return __async(this, null, function* () {
47
+ const { builderPluginAdapterModern } = yield import("../shared/builderPlugins/adapterModern");
48
+ builder.addPlugins([builderPluginAdapterModern(options)]);
49
+ });
50
+ }
51
+ export {
52
+ generateBuilder
53
+ };