@modern-js/app-tools 2.3.1-alpha.2 → 3.0.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,22 +1,3 @@
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
1
  var __async = (__this, __arguments, generator) => {
21
2
  return new Promise((resolve, reject) => {
22
3
  var fulfilled = (value) => {
@@ -37,123 +18,22 @@ var __async = (__this, __arguments, generator) => {
37
18
  step((generator = generator.apply(__this, __arguments)).next());
38
19
  });
39
20
  };
40
- import {
41
- createBuilder
42
- } from "@modern-js/builder";
43
- import {
44
- builderWebpackProvider
45
- } from "@modern-js/builder-webpack-provider";
46
- import {
47
- applyOptionsChain,
48
- isProd,
49
- isSSR,
50
- isUseSSRBundle
51
- } from "@modern-js/utils";
52
- import {
53
- PluginCompatModern
54
- } from "./builderPlugins/compatModern";
55
- import { createCopyPattern } from "./share";
56
- function getBuilderTargets(normalizedConfig) {
57
- const targets = ["web"];
58
- const useNodeTarget = isProd() ? isUseSSRBundle(normalizedConfig) : isSSR(normalizedConfig);
59
- if (useNodeTarget) {
60
- targets.push("node");
61
- }
62
- return targets;
63
- }
64
- function createBuilderForModern(_0) {
65
- return __async(this, arguments, function* ({
66
- normalizedConfig,
67
- appContext,
68
- compatPluginConfig
69
- }) {
70
- const builderConfig = createBuilderProviderConfig(
71
- normalizedConfig,
72
- appContext
73
- );
74
- const webpackProvider = builderWebpackProvider({
75
- builderConfig
76
- });
77
- const target = getBuilderTargets(normalizedConfig);
78
- const builderOptions = createBuilderOptions(target, appContext);
79
- const builder = yield createBuilder(webpackProvider, builderOptions);
80
- yield applyBuilderPlugins(
81
- builder,
82
- normalizedConfig,
83
- appContext,
84
- compatPluginConfig
85
- );
86
- return builder;
87
- });
88
- }
89
- function createBuilderProviderConfig(normalizedConfig, appContext) {
90
- const output = createOutputConfig(normalizedConfig, appContext);
91
- const htmlConfig = __spreadValues({}, normalizedConfig.html);
92
- if (!htmlConfig.template) {
93
- htmlConfig.templateByEntries = __spreadValues(__spreadValues({}, htmlConfig.templateByEntries), appContext.htmlTemplates);
94
- }
95
- return __spreadProps(__spreadValues({}, normalizedConfig), {
96
- output,
97
- dev: __spreadProps(__spreadValues({}, normalizedConfig.dev), {
98
- port: appContext.port
99
- }),
100
- html: htmlConfig
101
- });
102
- function createOutputConfig(config, appContext2) {
103
- const defaultCopyPattern = createCopyPattern(appContext2, config, "upload");
104
- const { copy } = config.output;
105
- const copyOptions = Array.isArray(copy) ? copy : copy == null ? void 0 : copy.patterns;
106
- const builderCopy = [...copyOptions || [], defaultCopyPattern];
107
- return __spreadProps(__spreadValues({}, config.output), {
108
- copy: builderCopy,
109
- cleanDistPath: false
110
- });
111
- }
112
- }
113
- function createBuilderOptions(target, appContext) {
114
- const entries = {};
115
- const { entrypoints = [], checkedEntries } = appContext;
116
- for (const { entryName, entry } of entrypoints) {
117
- if (checkedEntries && !checkedEntries.includes(entryName)) {
118
- continue;
119
- }
120
- if (entryName in entries) {
121
- entries[entryName].push(entry);
122
- } else {
123
- entries[entryName] = [entry];
124
- }
125
- }
126
- return {
127
- cwd: appContext.appDirectory,
128
- target,
129
- configPath: appContext.configFile || void 0,
130
- entry: entries,
131
- framework: appContext.metaName
132
- };
133
- }
134
- function applyBuilderPlugins(builder, normalizedConfig, appContext, compatPluginConfig) {
21
+ function createBuilderGenerator(bundler) {
135
22
  return __async(this, null, function* () {
136
- if (!normalizedConfig.output.disableNodePolyfill) {
137
- const { builderPluginNodePolyfill } = yield import("@modern-js/builder-plugin-node-polyfill");
138
- builder.addPlugins([builderPluginNodePolyfill()]);
139
- }
140
- if (normalizedConfig.tools.esbuild) {
141
- const { esbuild: esbuildOptions } = normalizedConfig.tools;
142
- const { builderPluginEsbuild } = yield import("@modern-js/builder-plugin-esbuild");
143
- builder.addPlugins([
144
- builderPluginEsbuild({
145
- loader: false,
146
- minimize: applyOptionsChain({}, esbuildOptions)
147
- })
148
- ]);
23
+ if (bundler === "rspack") {
24
+ try {
25
+ const { createRspackBuilderForModern } = yield import("./builder-rspack");
26
+ return createRspackBuilderForModern;
27
+ } catch (_) {
28
+ throw new Error(
29
+ "Failed to use rspack, please check if you have `@modern-js/builder-rspack-provider` installed"
30
+ );
31
+ }
149
32
  }
150
- builder.addPlugins([
151
- PluginCompatModern(appContext, normalizedConfig, compatPluginConfig)
152
- ]);
33
+ const { createWebpackBuilderForModern } = yield import("./builder-webpack");
34
+ return createWebpackBuilderForModern;
153
35
  });
154
36
  }
155
37
  export {
156
- createBuilderForModern,
157
- createBuilderOptions,
158
- createBuilderProviderConfig
38
+ createBuilderGenerator
159
39
  };
@@ -17,22 +17,35 @@ var __spreadValues = (a, b) => {
17
17
  return a;
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- import { join } from "path";
21
20
  import {
22
21
  mergeBuilderConfig
23
22
  } from "@modern-js/builder-shared";
24
- import { template as lodashTemplate } from "@modern-js/utils/lodash";
25
- import HtmlWebpackPlugin from "@modern-js/builder-webpack-provider/html-webpack-plugin";
26
23
  import { getEntryOptions } from "@modern-js/utils";
27
- import { BottomTemplatePlugin } from "../webpackPlugins/htmlBottomTemplate";
28
- import { HtmlAsyncChunkPlugin } from "../webpackPlugins/htmlAsyncChunkPlugin";
29
- import { createCopyPattern } from "../share";
30
- import RouterPlugin from "../webpackPlugins/routerPlugin";
31
- const PluginCompatModern = (appContext, modernConfig, options) => ({
32
- name: "builder-plugin-compat-modern",
24
+ import HtmlWebpackPlugin from "@modern-js/builder-webpack-provider/html-webpack-plugin";
25
+ import { template as lodashTemplate } from "@modern-js/utils/lodash";
26
+ import { HtmlAsyncChunkPlugin } from "../bundlerPlugins/HtmlAsyncChunkPlugin";
27
+ import { BottomTemplatePlugin } from "../bundlerPlugins/HtmlBottomTemplate";
28
+ const isStreamingSSR = (userConfig) => {
29
+ const isStreaming = (ssr) => ssr && typeof ssr === "object" && ssr.mode === "stream";
30
+ const { server } = userConfig;
31
+ if (isStreaming(server.ssr)) {
32
+ return true;
33
+ }
34
+ if ((server == null ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
35
+ for (const name of Object.keys(server.ssrByEntries)) {
36
+ if (isStreaming(server.ssrByEntries[name])) {
37
+ return true;
38
+ }
39
+ }
40
+ }
41
+ return false;
42
+ };
43
+ const builderPluginAdapterModern = (options) => ({
44
+ name: "builder-plugin-adapter-modern",
33
45
  setup(api) {
46
+ const { normalizedConfig, appContext } = options;
34
47
  api.modifyBuilderConfig((config) => {
35
- if (isStreamingSSR(modernConfig)) {
48
+ if (isStreamingSSR(normalizedConfig)) {
36
49
  return mergeBuilderConfig(config, {
37
50
  html: {
38
51
  inject: "body"
@@ -41,71 +54,46 @@ const PluginCompatModern = (appContext, modernConfig, options) => ({
41
54
  }
42
55
  return config;
43
56
  });
44
- api.modifyWebpackChain((chain, { target, CHAIN_ID, isProd }) => {
45
- var _a;
46
- const builderNormalizedConfig = api.getNormalizedConfig();
57
+ api.modifyBundlerChain((chain, { target, CHAIN_ID, isProd }) => {
58
+ const builderConfig = api.getNormalizedConfig();
47
59
  if (target === "node") {
48
60
  chain.name("server");
61
+ } else if (target === "service-worker") {
62
+ chain.name("service-worker");
63
+ } else if (target === "web-worker") {
64
+ chain.name("worker");
49
65
  } else if (target === "modern-web") {
50
66
  chain.name("modern");
51
67
  } else {
52
68
  chain.name("client");
53
69
  }
54
- chain.resolve.modules.add("node_modules").add(join(api.context.rootPath, "node_modules"));
55
- if (target === "node") {
56
- applyNodeCompat(chain, modernConfig, isProd);
70
+ if (target === "node" || target === "service-worker") {
71
+ applyNodeCompat(target, chain, normalizedConfig, isProd);
57
72
  }
58
- if (isHtmlEnabled(builderNormalizedConfig, target)) {
59
- applyBottomHtmlWebpackPlugin({
73
+ if (isHtmlEnabled(builderConfig, target)) {
74
+ applyBottomHtmlPlugin({
60
75
  api,
61
76
  chain,
62
- CHAIN_ID,
77
+ modernConfig: normalizedConfig,
63
78
  appContext,
64
- modernConfig
79
+ CHAIN_ID
65
80
  });
66
81
  applyAsyncChunkHtmlPlugin({
67
82
  chain,
68
- CHAIN_ID,
69
- modernConfig
83
+ modernConfig: normalizedConfig,
84
+ CHAIN_ID
70
85
  });
71
86
  }
72
- if (chain.plugins.has(CHAIN_ID.PLUGIN.COPY)) {
73
- const defaultCopyPattern = createCopyPattern(
74
- appContext,
75
- modernConfig,
76
- "public",
77
- chain
78
- );
79
- chain.plugin(CHAIN_ID.PLUGIN.COPY).tap((args) => {
80
- var _a2;
81
- return [
82
- {
83
- patterns: [...((_a2 = args[0]) == null ? void 0 : _a2.patterns) || [], defaultCopyPattern]
84
- }
85
- ];
86
- });
87
- }
88
- const { entrypoints } = appContext;
89
- const existNestedRoutes = entrypoints.some(
90
- (entrypoint) => entrypoint.nestedRoutesEntry
91
- );
92
- const routerConfig = (_a = modernConfig == null ? void 0 : modernConfig.runtime) == null ? void 0 : _a.router;
93
- const routerManifest = Boolean(routerConfig == null ? void 0 : routerConfig.manifest);
94
- if (existNestedRoutes || routerManifest) {
95
- chain.plugin("route-plugin").use(RouterPlugin);
96
- }
97
- if (target !== "node") {
87
+ if (target !== "node" && target !== "web-worker" && target !== "service-worker") {
98
88
  const bareServerModuleReg = /\.(server|node)\.[tj]sx?$/;
99
89
  chain.module.rule(CHAIN_ID.RULE.JS).exclude.add(bareServerModuleReg);
100
90
  chain.module.rule("bare-server-module").test(bareServerModuleReg).use("server-module-loader").loader(require.resolve("../loaders/serverModuleLoader"));
101
91
  }
102
- function isHtmlEnabled(config, target2) {
103
- var _a2;
104
- return ((_a2 = config.tools) == null ? void 0 : _a2.htmlPlugin) !== false && target2 !== "node" && target2 !== "web-worker";
105
- }
106
92
  });
107
- if (options) {
108
- applyCallbacks(api, options);
93
+ applyCallbacks(api, options);
94
+ function isHtmlEnabled(config, target) {
95
+ var _a;
96
+ return ((_a = config.tools) == null ? void 0 : _a.htmlPlugin) !== false && target !== "node" && target !== "service-worker" && target !== "web-worker";
109
97
  }
110
98
  }
111
99
  });
@@ -119,8 +107,51 @@ function applyCallbacks(api, options) {
119
107
  options.onDevCompileDone && api.onDevCompileDone(options.onDevCompileDone);
120
108
  options.onExit && api.onExit(options.onExit);
121
109
  }
122
- function applyNodeCompat(chain, modernConfig, isProd) {
123
- for (const ext of [
110
+ function applyBottomHtmlPlugin({
111
+ api,
112
+ chain,
113
+ modernConfig,
114
+ appContext,
115
+ CHAIN_ID
116
+ }) {
117
+ for (const entryName of Object.keys(api.context.entry)) {
118
+ const baseTemplateParams = __spreadValues({
119
+ entryName,
120
+ title: getEntryOptions(
121
+ entryName,
122
+ modernConfig.html.title,
123
+ modernConfig.html.titleByEntries,
124
+ appContext.packageName
125
+ ),
126
+ mountId: modernConfig.html.mountId
127
+ }, getEntryOptions(
128
+ entryName,
129
+ modernConfig.html.templateParameters,
130
+ modernConfig.html.templateParametersByEntries,
131
+ appContext.packageName
132
+ ));
133
+ chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args) => [
134
+ __spreadProps(__spreadValues({}, args[0] || {}), {
135
+ __internal__: true,
136
+ bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && lodashTemplate(appContext.htmlTemplates[`__${entryName}-bottom__`])(
137
+ baseTemplateParams
138
+ )
139
+ })
140
+ ]);
141
+ }
142
+ chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [HtmlWebpackPlugin]);
143
+ }
144
+ function applyAsyncChunkHtmlPlugin({
145
+ chain,
146
+ modernConfig,
147
+ CHAIN_ID
148
+ }) {
149
+ if (isStreamingSSR(modernConfig)) {
150
+ chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [HtmlWebpackPlugin]);
151
+ }
152
+ }
153
+ function applyNodeCompat(target, chain, modernConfig, isProd) {
154
+ const nodeExts = [
124
155
  ".node.js",
125
156
  ".node.jsx",
126
157
  ".node.ts",
@@ -129,9 +160,21 @@ function applyNodeCompat(chain, modernConfig, isProd) {
129
160
  ".server.ts",
130
161
  ".server.ts",
131
162
  ".server.tsx"
132
- ]) {
163
+ ];
164
+ const webWorkerExts = [
165
+ ".worker.js",
166
+ ".worker.jsx",
167
+ ".worker.ts",
168
+ ".worker.tsx"
169
+ ];
170
+ for (const ext of nodeExts) {
133
171
  chain.resolve.extensions.prepend(ext);
134
172
  }
173
+ if (target === "service-worker") {
174
+ for (const ext of webWorkerExts) {
175
+ chain.resolve.extensions.prepend(ext);
176
+ }
177
+ }
135
178
  filterEntriesBySSRConfig(
136
179
  isProd,
137
180
  chain,
@@ -170,64 +213,7 @@ function applyNodeCompat(chain, modernConfig, isProd) {
170
213
  });
171
214
  }
172
215
  }
173
- function applyBottomHtmlWebpackPlugin({
174
- api,
175
- chain,
176
- modernConfig,
177
- appContext,
178
- CHAIN_ID
179
- }) {
180
- for (const entryName of Object.keys(api.context.entry)) {
181
- const baseTemplateParams = __spreadValues({
182
- entryName,
183
- title: getEntryOptions(
184
- entryName,
185
- modernConfig.html.title,
186
- modernConfig.html.titleByEntries,
187
- appContext.packageName
188
- ),
189
- mountId: modernConfig.html.mountId
190
- }, getEntryOptions(
191
- entryName,
192
- modernConfig.html.templateParameters,
193
- modernConfig.html.templateParametersByEntries,
194
- appContext.packageName
195
- ));
196
- chain.plugin(`${CHAIN_ID.PLUGIN.HTML}-${entryName}`).tap((args) => [
197
- __spreadProps(__spreadValues({}, args[0] || {}), {
198
- __internal__: true,
199
- bottomTemplate: appContext.htmlTemplates[`__${entryName}-bottom__`] && lodashTemplate(appContext.htmlTemplates[`__${entryName}-bottom__`])(
200
- baseTemplateParams
201
- )
202
- })
203
- ]);
204
- }
205
- chain.plugin(CHAIN_ID.PLUGIN.BOTTOM_TEMPLATE).use(BottomTemplatePlugin, [HtmlWebpackPlugin]);
206
- }
207
- const isStreamingSSR = (userConfig) => {
208
- const isStreaming = (ssr) => ssr && typeof ssr === "object" && ssr.mode === "stream";
209
- const { server } = userConfig;
210
- if (isStreaming(server.ssr)) {
211
- return true;
212
- }
213
- if ((server == null ? void 0 : server.ssrByEntries) && typeof server.ssrByEntries === "object") {
214
- for (const name of Object.keys(server.ssrByEntries)) {
215
- if (isStreaming(server.ssrByEntries[name])) {
216
- return true;
217
- }
218
- }
219
- }
220
- return false;
221
- };
222
- function applyAsyncChunkHtmlPlugin({
223
- chain,
224
- modernConfig,
225
- CHAIN_ID
226
- }) {
227
- if (isStreamingSSR(modernConfig)) {
228
- chain.plugin(CHAIN_ID.PLUGIN.HTML_ASYNC_CHUNK).use(HtmlAsyncChunkPlugin, [HtmlWebpackPlugin]);
229
- }
230
- }
231
216
  export {
232
- PluginCompatModern
217
+ applyCallbacks,
218
+ builderPluginAdapterModern
233
219
  };
@@ -0,0 +1,27 @@
1
+ class HtmlAsyncChunkPlugin {
2
+ constructor(htmlWebpackPlugin) {
3
+ this.name = "HtmlAsyncChunkPlugin";
4
+ this.htmlWebpackPlugin = htmlWebpackPlugin;
5
+ }
6
+ apply(compiler) {
7
+ compiler.hooks.compilation.tap(this.name, (compilation) => {
8
+ const hooks = this.htmlWebpackPlugin.getHooks(compilation);
9
+ hooks.alterAssetTagGroups.tap(this.name, (assets) => {
10
+ const tags = [...assets.headTags, ...assets.bodyTags];
11
+ for (const tag of tags) {
12
+ if (tag.tagName === "script") {
13
+ const { attributes } = tag;
14
+ if (attributes && attributes.defer === true) {
15
+ attributes.async = true;
16
+ delete attributes.defer;
17
+ }
18
+ }
19
+ }
20
+ return assets;
21
+ });
22
+ });
23
+ }
24
+ }
25
+ export {
26
+ HtmlAsyncChunkPlugin
27
+ };
@@ -0,0 +1,34 @@
1
+ class BottomTemplatePlugin {
2
+ constructor(htmlWebpackPlugin) {
3
+ this.bottomTemplateReg = /<!--<\?-\s*bottomTemplate\s*\?>-->/;
4
+ this.bodyRegExp = /(<\/\s*body\s*>)/i;
5
+ this.htmlWebpackPlugin = htmlWebpackPlugin;
6
+ this.name = "bottom-template";
7
+ }
8
+ apply(compiler) {
9
+ compiler.hooks.compilation.tap(this.name, (compilation) => {
10
+ this.htmlWebpackPlugin.getHooks(compilation).beforeEmit.tap(this.name, (data) => {
11
+ var _a;
12
+ if (!((_a = data.plugin.options) == null ? void 0 : _a.__internal__)) {
13
+ return data;
14
+ }
15
+ if (this.bottomTemplateReg.test(data.html)) {
16
+ data.html = data.html.replace(this.bottomTemplateReg, "");
17
+ const { bottomTemplate } = data.plugin.options;
18
+ if (bottomTemplate) {
19
+ data.html = data.html.replace(
20
+ this.bodyRegExp,
21
+ (match) => `
22
+ ${bottomTemplate}
23
+ ${match}`
24
+ );
25
+ }
26
+ }
27
+ return data;
28
+ });
29
+ });
30
+ }
31
+ }
32
+ export {
33
+ BottomTemplatePlugin
34
+ };
@@ -0,0 +1,3 @@
1
+ export * from "./createCopyPattern";
2
+ export * from "./types";
3
+ export * from "./builderPlugins/adapterModern";
File without changes
@@ -18,12 +18,11 @@ var __spreadValues = (a, b) => {
18
18
  };
19
19
  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
20
  import { createDefaultConfig as createDefaultBuilderConfig } from "@modern-js/builder-webpack-provider";
21
- function createDefaultConfig(appContext) {
21
+ function createDefaultConfig(appContext, bundler) {
22
22
  const defaultBuilderConfig = createDefaultBuilderConfig();
23
23
  const dev = __spreadProps(__spreadValues({}, defaultBuilderConfig.dev), {
24
24
  port: void 0
25
25
  });
26
- const tools = __spreadValues({}, defaultBuilderConfig.tools);
27
26
  const output = __spreadProps(__spreadValues({}, defaultBuilderConfig.output), {
28
27
  disableNodePolyfill: true
29
28
  });
@@ -61,6 +60,7 @@ function createDefaultConfig(appContext) {
61
60
  baseUrl: "/",
62
61
  port: 8080
63
62
  };
63
+ const tools = bundler === "webpack" ? __spreadValues({}, defaultBuilderConfig.tools) : void 0;
64
64
  return {
65
65
  source,
66
66
  output,
@@ -1,8 +1,3 @@
1
- import { createDefaultConfig, createLegacyDefaultConfig } from "./default";
2
- import { initialNormalizedConfig, checkIsLegacyConfig } from "./initial";
3
- export {
4
- checkIsLegacyConfig,
5
- createDefaultConfig,
6
- createLegacyDefaultConfig,
7
- initialNormalizedConfig
8
- };
1
+ export * from "./legacy";
2
+ export * from "./initialize";
3
+ export * from "./default";
@@ -0,0 +1,12 @@
1
+ import { initHtmlConfig, initSourceConfig, initToolsConfig } from "./inits";
2
+ function initialNormalizedConfig(config, appContext, bundler) {
3
+ initHtmlConfig(config, appContext);
4
+ initSourceConfig(config, appContext, bundler);
5
+ if (bundler === "webpack") {
6
+ initToolsConfig(config);
7
+ }
8
+ return config;
9
+ }
10
+ export {
11
+ initialNormalizedConfig
12
+ };
@@ -59,10 +59,12 @@ function initHtmlConfig(config, appContext) {
59
59
  return favicon || defaultFavicon || void 0;
60
60
  }
61
61
  }
62
- function initSourceConfig(config, appContext) {
62
+ function initSourceConfig(config, appContext, bundler) {
63
63
  config.source.include = createBuilderInclude(config, appContext);
64
- config.source.moduleScopes = createBuilderModuleScope(config);
65
64
  config.source.globalVars = createBuilderGlobalVars(config, appContext);
65
+ if (bundler === "webpack") {
66
+ config.source.moduleScopes = createBuilderModuleScope(config);
67
+ }
66
68
  function createBuilderGlobalVars(config2, appContext2) {
67
69
  const { globalVars = {} } = config2.source;
68
70
  const publicEnv = getAutoInjectEnv(appContext2);
@@ -42,6 +42,10 @@ function transformNormalizedConfig(config) {
42
42
  }
43
43
  };
44
44
  }
45
+ function checkIsLegacyConfig(config) {
46
+ return Boolean(config.legacy);
47
+ }
45
48
  export {
49
+ checkIsLegacyConfig,
46
50
  transformNormalizedConfig
47
51
  };
@@ -103,7 +103,9 @@ const buildCommand = (program, api) => __async(void 0, null, function* () {
103
103
  }
104
104
  }
105
105
  });
106
- var src_default = () => ({
106
+ var src_default = (options = {
107
+ bundler: "webpack"
108
+ }) => ({
107
109
  name: "@modern-js/app-tools",
108
110
  post: [
109
111
  "@modern-js/plugin-initialize",
@@ -116,7 +118,15 @@ var src_default = () => ({
116
118
  "@modern-js/plugin-polyfill"
117
119
  ],
118
120
  registerHook: hooks,
119
- usePlugins: [initializePlugin(), analyzePlugin(), lintPlugin()],
121
+ usePlugins: [
122
+ initializePlugin({
123
+ bundler: (options == null ? void 0 : options.bundler) === "experimental-rspack" ? "rspack" : "webpack"
124
+ }),
125
+ analyzePlugin({
126
+ bundler: (options == null ? void 0 : options.bundler) === "experimental-rspack" ? "rspack" : "webpack"
127
+ }),
128
+ lintPlugin()
129
+ ],
120
130
  setup: (api) => {
121
131
  const locale = getLocaleLanguage();
122
132
  i18n.changeLanguage({ locale });
@@ -135,19 +145,19 @@ var src_default = () => ({
135
145
  program.command("deploy").usage("[options]").option(
136
146
  "-c --config <config>",
137
147
  i18n.t(localeKeys.command.shared.config)
138
- ).description(i18n.t(localeKeys.command.deploy.describe)).action((options) => __async(this, null, function* () {
148
+ ).description(i18n.t(localeKeys.command.deploy.describe)).action((options2) => __async(this, null, function* () {
139
149
  const { build } = yield import("./commands/build");
140
150
  yield build(api);
141
151
  const { deploy } = yield import("./commands/deploy");
142
- yield deploy(api, options);
152
+ yield deploy(api, options2);
143
153
  process.exit(0);
144
154
  }));
145
155
  program.command("new").usage("[options]").description(i18n.t(localeKeys.command.new.describe)).option("--lang <lang>", i18n.t(localeKeys.command.new.lang)).option("-d, --debug", i18n.t(localeKeys.command.new.debug), false).option(
146
156
  "-c, --config <config>",
147
157
  i18n.t(localeKeys.command.new.config)
148
- ).option("--dist-tag <tag>", i18n.t(localeKeys.command.new.distTag)).option("--registry", i18n.t(localeKeys.command.new.registry)).action((options) => __async(this, null, function* () {
158
+ ).option("--dist-tag <tag>", i18n.t(localeKeys.command.new.distTag)).option("--registry", i18n.t(localeKeys.command.new.registry)).action((options2) => __async(this, null, function* () {
149
159
  const { MWANewAction } = yield import("@modern-js/new-action");
150
- yield MWANewAction(__spreadProps(__spreadValues({}, options), { locale: options.lang || locale }));
160
+ yield MWANewAction(__spreadProps(__spreadValues({}, options2), { locale: options2.lang || locale }));
151
161
  }));
152
162
  program.command("inspect").description("inspect internal webpack config").option(
153
163
  `--env <env>`,
@@ -160,9 +170,9 @@ var src_default = () => ({
160
170
  ).option("--verbose", i18n.t(localeKeys.command.inspect.verbose)).option(
161
171
  "-c --config <config>",
162
172
  i18n.t(localeKeys.command.shared.config)
163
- ).action((options) => __async(this, null, function* () {
173
+ ).action((options2) => __async(this, null, function* () {
164
174
  const { inspect } = yield import("./commands/inspect");
165
- inspect(api, options);
175
+ inspect(api, options2);
166
176
  }));
167
177
  upgradeModel.defineCommand(program.command("upgrade"));
168
178
  });