@modern-js/app-tools 2.0.0-beta.2 → 2.0.0-beta.4

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 (236) hide show
  1. package/CHANGELOG.md +556 -0
  2. package/bin/modern.js +11 -1
  3. package/dist/js/modern/analyze/Builder.js +39 -0
  4. package/dist/js/modern/analyze/constants.js +38 -16
  5. package/dist/js/modern/analyze/generateCode.js +272 -211
  6. package/dist/js/modern/analyze/getBundleEntry.js +34 -32
  7. package/dist/js/modern/analyze/getClientRoutes/getRoutes.js +93 -49
  8. package/dist/js/modern/analyze/getClientRoutes/getRoutesLegacy.js +89 -47
  9. package/dist/js/modern/analyze/getClientRoutes/index.js +6 -2
  10. package/dist/js/modern/analyze/getClientRoutes/utils.js +23 -10
  11. package/dist/js/modern/analyze/getFileSystemEntry.js +43 -22
  12. package/dist/js/modern/analyze/getHtmlTemplate.js +89 -49
  13. package/dist/js/modern/analyze/getServerRoutes.js +122 -126
  14. package/dist/js/modern/analyze/index.js +201 -160
  15. package/dist/js/modern/analyze/isDefaultExportFunction.js +30 -16
  16. package/dist/js/modern/analyze/makeLegalIdentifier.js +10 -11
  17. package/dist/js/modern/analyze/nestedRoutes.js +110 -53
  18. package/dist/js/modern/analyze/templates.js +191 -77
  19. package/dist/js/modern/analyze/utils.js +98 -51
  20. package/dist/js/modern/builder/builderPlugins/compatModern.js +125 -107
  21. package/dist/js/modern/builder/index.js +124 -89
  22. package/dist/js/modern/builder/loaders/routerLoader.js +17 -0
  23. package/dist/js/modern/builder/loaders/serverModuleLoader.js +7 -0
  24. package/dist/js/modern/builder/share.js +23 -21
  25. package/dist/js/modern/builder/webpackPlugins/htmlAsyncChunkPlugin.js +23 -22
  26. package/dist/js/modern/builder/webpackPlugins/htmlBottomTemplate.js +31 -27
  27. package/dist/js/modern/builder/webpackPlugins/routerPlugin.js +100 -84
  28. package/dist/js/modern/commands/build.js +67 -42
  29. package/dist/js/modern/commands/deploy.js +27 -4
  30. package/dist/js/modern/commands/dev.js +93 -47
  31. package/dist/js/modern/commands/index.js +1 -1
  32. package/dist/js/modern/commands/inspect.js +30 -5
  33. package/dist/js/modern/commands/start.js +37 -16
  34. package/dist/js/modern/config/default.js +103 -114
  35. package/dist/js/modern/config/index.js +8 -2
  36. package/dist/js/modern/config/initial/createHtmlConfig.js +5 -2
  37. package/dist/js/modern/config/initial/createOutputConfig.js +11 -9
  38. package/dist/js/modern/config/initial/createSourceConfig.js +5 -2
  39. package/dist/js/modern/config/initial/createToolsConfig.js +7 -6
  40. package/dist/js/modern/config/initial/index.js +9 -4
  41. package/dist/js/modern/config/initial/inits.js +109 -73
  42. package/dist/js/modern/config/initial/transformNormalizedConfig.js +6 -3
  43. package/dist/js/modern/defineConfig.js +26 -11
  44. package/dist/js/modern/exports/server.js +4 -1
  45. package/dist/js/modern/hooks.js +15 -4
  46. package/dist/js/modern/index.js +178 -90
  47. package/dist/js/modern/initialize/index.js +98 -51
  48. package/dist/js/modern/locale/en.js +20 -21
  49. package/dist/js/modern/locale/index.js +6 -6
  50. package/dist/js/modern/locale/zh.js +21 -22
  51. package/dist/js/modern/schema/Schema.js +6 -5
  52. package/dist/js/modern/schema/index.js +51 -100
  53. package/dist/js/modern/schema/legacy.js +96 -231
  54. package/dist/js/modern/types/config/index.js +0 -1
  55. package/dist/js/modern/types/index.js +0 -1
  56. package/dist/js/modern/types/legacyConfig/output.js +0 -1
  57. package/dist/js/modern/utils/commands.js +5 -2
  58. package/dist/js/modern/utils/config.js +102 -41
  59. package/dist/js/modern/utils/createFileWatcher.js +84 -51
  60. package/dist/js/modern/utils/createServer.js +63 -17
  61. package/dist/js/modern/utils/getSpecifiedEntries.js +46 -19
  62. package/dist/js/modern/utils/language.js +6 -3
  63. package/dist/js/modern/utils/printInstructions.js +27 -8
  64. package/dist/js/modern/utils/restart.js +43 -16
  65. package/dist/js/modern/utils/routes.js +29 -12
  66. package/dist/js/node/analyze/Builder.js +58 -0
  67. package/dist/js/node/analyze/constants.js +54 -35
  68. package/dist/js/node/analyze/generateCode.js +291 -228
  69. package/dist/js/node/analyze/getBundleEntry.js +58 -44
  70. package/dist/js/node/analyze/getClientRoutes/getRoutes.js +132 -76
  71. package/dist/js/node/analyze/getClientRoutes/getRoutesLegacy.js +128 -74
  72. package/dist/js/node/analyze/getClientRoutes/index.js +23 -17
  73. package/dist/js/node/analyze/getClientRoutes/utils.js +44 -21
  74. package/dist/js/node/analyze/getFileSystemEntry.js +70 -39
  75. package/dist/js/node/analyze/getHtmlTemplate.js +116 -61
  76. package/dist/js/node/analyze/getServerRoutes.js +143 -137
  77. package/dist/js/node/analyze/index.js +247 -174
  78. package/dist/js/node/analyze/isDefaultExportFunction.js +55 -26
  79. package/dist/js/node/analyze/makeLegalIdentifier.js +27 -15
  80. package/dist/js/node/analyze/nestedRoutes.js +140 -67
  81. package/dist/js/node/analyze/templates.js +212 -84
  82. package/dist/js/node/analyze/utils.js +123 -62
  83. package/dist/js/node/builder/builderPlugins/compatModern.js +153 -120
  84. package/dist/js/node/builder/index.js +152 -98
  85. package/dist/js/node/builder/loaders/routerLoader.js +36 -0
  86. package/dist/js/node/builder/loaders/serverModuleLoader.js +26 -0
  87. package/dist/js/node/builder/share.js +46 -26
  88. package/dist/js/node/builder/webpackPlugins/htmlAsyncChunkPlugin.js +39 -26
  89. package/dist/js/node/builder/webpackPlugins/htmlBottomTemplate.js +47 -31
  90. package/dist/js/node/builder/webpackPlugins/routerPlugin.js +118 -90
  91. package/dist/js/node/commands/build.js +89 -52
  92. package/dist/js/node/commands/deploy.js +45 -10
  93. package/dist/js/node/commands/dev.js +115 -61
  94. package/dist/js/node/commands/index.js +19 -38
  95. package/dist/js/node/commands/inspect.js +48 -11
  96. package/dist/js/node/commands/start.js +65 -27
  97. package/dist/js/node/config/default.js +119 -118
  98. package/dist/js/node/config/index.js +25 -29
  99. package/dist/js/node/config/initial/createHtmlConfig.js +22 -6
  100. package/dist/js/node/config/initial/createOutputConfig.js +28 -13
  101. package/dist/js/node/config/initial/createSourceConfig.js +22 -6
  102. package/dist/js/node/config/initial/createToolsConfig.js +24 -10
  103. package/dist/js/node/config/initial/index.js +28 -17
  104. package/dist/js/node/config/initial/inits.js +126 -81
  105. package/dist/js/node/config/initial/transformNormalizedConfig.js +31 -15
  106. package/dist/js/node/defineConfig.js +43 -17
  107. package/dist/js/node/exports/server.js +21 -10
  108. package/dist/js/node/hooks.js +48 -29
  109. package/dist/js/node/index.js +225 -128
  110. package/dist/js/node/initialize/index.js +116 -61
  111. package/dist/js/node/locale/en.js +36 -25
  112. package/dist/js/node/locale/index.js +27 -15
  113. package/dist/js/node/locale/zh.js +37 -26
  114. package/dist/js/node/schema/Schema.js +23 -10
  115. package/dist/js/node/schema/index.js +77 -114
  116. package/dist/js/node/schema/legacy.js +117 -240
  117. package/dist/js/node/types/config/index.js +17 -16
  118. package/dist/js/node/types/index.js +19 -38
  119. package/dist/js/node/types/legacyConfig/output.js +0 -5
  120. package/dist/js/node/utils/commands.js +21 -6
  121. package/dist/js/node/utils/config.js +120 -51
  122. package/dist/js/node/utils/createFileWatcher.js +104 -60
  123. package/dist/js/node/utils/createServer.js +86 -25
  124. package/dist/js/node/utils/getSpecifiedEntries.js +64 -25
  125. package/dist/js/node/utils/language.js +24 -8
  126. package/dist/js/node/utils/printInstructions.js +47 -16
  127. package/dist/js/node/utils/restart.js +61 -21
  128. package/dist/js/node/utils/routes.js +53 -18
  129. package/dist/js/treeshaking/analyze/Builder.js +199 -0
  130. package/dist/js/treeshaking/analyze/constants.js +28 -16
  131. package/dist/js/treeshaking/analyze/generateCode.js +605 -355
  132. package/dist/js/treeshaking/analyze/getBundleEntry.js +55 -63
  133. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutes.js +214 -168
  134. package/dist/js/treeshaking/analyze/getClientRoutes/getRoutesLegacy.js +215 -169
  135. package/dist/js/treeshaking/analyze/getClientRoutes/index.js +3 -2
  136. package/dist/js/treeshaking/analyze/getClientRoutes/utils.js +19 -20
  137. package/dist/js/treeshaking/analyze/getFileSystemEntry.js +89 -86
  138. package/dist/js/treeshaking/analyze/getHtmlTemplate.js +298 -125
  139. package/dist/js/treeshaking/analyze/getServerRoutes.js +210 -146
  140. package/dist/js/treeshaking/analyze/index.js +571 -304
  141. package/dist/js/treeshaking/analyze/isDefaultExportFunction.js +45 -26
  142. package/dist/js/treeshaking/analyze/makeLegalIdentifier.js +13 -16
  143. package/dist/js/treeshaking/analyze/nestedRoutes.js +414 -160
  144. package/dist/js/treeshaking/analyze/templates.js +432 -161
  145. package/dist/js/treeshaking/analyze/utils.js +361 -80
  146. package/dist/js/treeshaking/builder/builderPlugins/compatModern.js +282 -195
  147. package/dist/js/treeshaking/builder/index.js +371 -167
  148. package/dist/js/treeshaking/builder/loaders/routerLoader.js +13 -0
  149. package/dist/js/treeshaking/builder/loaders/serverModuleLoader.js +5 -0
  150. package/dist/js/treeshaking/builder/share.js +38 -44
  151. package/dist/js/treeshaking/builder/webpackPlugins/htmlAsyncChunkPlugin.js +108 -44
  152. package/dist/js/treeshaking/builder/webpackPlugins/htmlBottomTemplate.js +70 -39
  153. package/dist/js/treeshaking/builder/webpackPlugins/routerPlugin.js +334 -112
  154. package/dist/js/treeshaking/commands/build.js +286 -88
  155. package/dist/js/treeshaking/commands/deploy.js +153 -25
  156. package/dist/js/treeshaking/commands/dev.js +318 -132
  157. package/dist/js/treeshaking/commands/index.js +1 -1
  158. package/dist/js/treeshaking/commands/inspect.js +147 -32
  159. package/dist/js/treeshaking/commands/start.js +190 -68
  160. package/dist/js/treeshaking/config/default.js +210 -199
  161. package/dist/js/treeshaking/config/index.js +3 -2
  162. package/dist/js/treeshaking/config/initial/createHtmlConfig.js +19 -31
  163. package/dist/js/treeshaking/config/initial/createOutputConfig.js +43 -67
  164. package/dist/js/treeshaking/config/initial/createSourceConfig.js +37 -40
  165. package/dist/js/treeshaking/config/initial/createToolsConfig.js +23 -38
  166. package/dist/js/treeshaking/config/initial/index.js +10 -9
  167. package/dist/js/treeshaking/config/initial/inits.js +205 -106
  168. package/dist/js/treeshaking/config/initial/transformNormalizedConfig.js +27 -34
  169. package/dist/js/treeshaking/defineConfig.js +60 -13
  170. package/dist/js/treeshaking/exports/server.js +2 -1
  171. package/dist/js/treeshaking/hooks.js +30 -25
  172. package/dist/js/treeshaking/index.js +681 -256
  173. package/dist/js/treeshaking/initialize/index.js +290 -112
  174. package/dist/js/treeshaking/locale/en.js +34 -33
  175. package/dist/js/treeshaking/locale/index.js +5 -5
  176. package/dist/js/treeshaking/locale/zh.js +34 -33
  177. package/dist/js/treeshaking/schema/Schema.js +267 -69
  178. package/dist/js/treeshaking/schema/index.js +165 -121
  179. package/dist/js/treeshaking/schema/legacy.js +323 -256
  180. package/dist/js/treeshaking/types/config/deploy.js +1 -0
  181. package/dist/js/treeshaking/types/config/dev.js +1 -0
  182. package/dist/js/treeshaking/types/config/experiments.js +1 -0
  183. package/dist/js/treeshaking/types/config/html.js +1 -0
  184. package/dist/js/treeshaking/types/config/index.js +0 -1
  185. package/dist/js/treeshaking/types/config/output.js +1 -0
  186. package/dist/js/treeshaking/types/config/performance.js +1 -0
  187. package/dist/js/treeshaking/types/config/security.js +1 -0
  188. package/dist/js/treeshaking/types/config/source.js +1 -0
  189. package/dist/js/treeshaking/types/config/tools.js +1 -0
  190. package/dist/js/treeshaking/types/hooks.js +1 -0
  191. package/dist/js/treeshaking/types/index.js +0 -1
  192. package/dist/js/treeshaking/types/legacyConfig/deploy.js +1 -0
  193. package/dist/js/treeshaking/types/legacyConfig/dev.js +1 -0
  194. package/dist/js/treeshaking/types/legacyConfig/index.js +1 -0
  195. package/dist/js/treeshaking/types/legacyConfig/output.js +1 -1
  196. package/dist/js/treeshaking/types/legacyConfig/source.js +1 -0
  197. package/dist/js/treeshaking/types/legacyConfig/tools.js +1 -0
  198. package/dist/js/treeshaking/utils/commands.js +6 -5
  199. package/dist/js/treeshaking/utils/config.js +295 -117
  200. package/dist/js/treeshaking/utils/createFileWatcher.js +278 -118
  201. package/dist/js/treeshaking/utils/createServer.js +252 -67
  202. package/dist/js/treeshaking/utils/getSpecifiedEntries.js +182 -55
  203. package/dist/js/treeshaking/utils/language.js +6 -5
  204. package/dist/js/treeshaking/utils/printInstructions.js +151 -29
  205. package/dist/js/treeshaking/utils/restart.js +184 -42
  206. package/dist/js/treeshaking/utils/routes.js +151 -27
  207. package/dist/js/treeshaking/utils/types.js +1 -0
  208. package/dist/types/analyze/Builder.d.ts +8 -0
  209. package/dist/types/analyze/constants.d.ts +2 -0
  210. package/dist/types/analyze/index.d.ts +2 -0
  211. package/dist/types/analyze/templates.d.ts +10 -7
  212. package/dist/types/analyze/utils.d.ts +9 -1
  213. package/dist/types/builder/builderPlugins/compatModern.d.ts +2 -1
  214. package/dist/types/builder/index.d.ts +3 -3
  215. package/dist/types/builder/loaders/routerLoader.d.ts +3 -0
  216. package/dist/types/builder/loaders/serverModuleLoader.d.ts +3 -0
  217. package/dist/types/builder/webpackPlugins/routerPlugin.d.ts +1 -7
  218. package/dist/types/defineConfig.d.ts +1 -0
  219. package/dist/types/index.d.ts +6 -1
  220. package/dist/types/initialize/index.d.ts +2 -0
  221. package/dist/types/types/config/dev.d.ts +2 -2
  222. package/dist/types/types/config/index.d.ts +1 -0
  223. package/dist/types/types/config/output.d.ts +0 -1
  224. package/dist/types/types/config/source.d.ts +1 -0
  225. package/dist/types/types/config/tools.d.ts +10 -1
  226. package/dist/types/types/hooks.d.ts +7 -1
  227. package/dist/types/types/legacyConfig/dev.d.ts +1 -0
  228. package/dist/types/types/legacyConfig/output.d.ts +1 -1
  229. package/dist/types/types/legacyConfig/source.d.ts +1 -0
  230. package/dist/types/types/legacyConfig/tools.d.ts +1 -0
  231. package/dist/types/utils/config.d.ts +1 -0
  232. package/dist/types/utils/createFileWatcher.d.ts +2 -1
  233. package/dist/types/utils/createServer.d.ts +1 -0
  234. package/dist/types/utils/restart.d.ts +1 -1
  235. package/lib/types.d.ts +1 -1
  236. package/package.json +26 -22
@@ -1,86 +1,120 @@
1
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
2
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
3
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
- import { createBuilder } from '@modern-js/builder';
5
- import { builderWebpackProvider } from '@modern-js/builder-webpack-provider';
6
- import { applyOptionsChain, isUseSSRBundle } from '@modern-js/utils';
7
- import { PluginCompatModern } from "./builderPlugins/compatModern";
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
+ createBuilder
42
+ } from "@modern-js/builder";
43
+ import {
44
+ builderWebpackProvider
45
+ } from "@modern-js/builder-webpack-provider";
46
+ import { applyOptionsChain, isUseSSRBundle } from "@modern-js/utils";
47
+ import {
48
+ PluginCompatModern
49
+ } from "./builderPlugins/compatModern";
8
50
  import { createCopyPattern } from "./share";
9
51
  function getBuilderTargets(normalizedConfig) {
10
- const targets = ['web'];
11
- if (normalizedConfig.output.enableModernMode && !targets.includes('modern-web')) {
12
- targets.push('modern-web');
13
- }
52
+ const targets = ["web"];
14
53
  if (isUseSSRBundle(normalizedConfig)) {
15
- targets.push('node');
54
+ targets.push("node");
16
55
  }
17
56
  return targets;
18
57
  }
19
- export async function createBuilderForEdenX({
20
- normalizedConfig,
21
- appContext,
22
- compatPluginConfig
23
- }) {
24
- // create webpack provider
25
- const builderConfig = createBuilderProviderConfig(normalizedConfig, appContext);
26
- const webpackProvider = builderWebpackProvider({
27
- builderConfig
58
+ function createBuilderForModern(_0) {
59
+ return __async(this, arguments, function* ({
60
+ normalizedConfig,
61
+ appContext,
62
+ compatPluginConfig
63
+ }) {
64
+ const builderConfig = createBuilderProviderConfig(
65
+ normalizedConfig,
66
+ appContext
67
+ );
68
+ const webpackProvider = builderWebpackProvider({
69
+ builderConfig
70
+ });
71
+ const target = getBuilderTargets(normalizedConfig);
72
+ const builderOptions = createBuilderOptions(target, appContext);
73
+ const builder = yield createBuilder(webpackProvider, builderOptions);
74
+ yield applyBuilderPlugins(
75
+ builder,
76
+ normalizedConfig,
77
+ appContext,
78
+ compatPluginConfig
79
+ );
80
+ return builder;
28
81
  });
29
- const target = getBuilderTargets(normalizedConfig);
30
- const builderOptions = createBuilderOptions(target, appContext);
31
- const builder = await createBuilder(webpackProvider, builderOptions);
32
- await applyBuilderPlugins(builder, normalizedConfig, appContext, compatPluginConfig);
33
- return builder;
34
82
  }
35
- export function createBuilderProviderConfig(normalizedConfig, appContext) {
83
+ function createBuilderProviderConfig(normalizedConfig, appContext) {
84
+ var _a;
36
85
  const output = createOutputConfig(normalizedConfig, appContext);
37
- return _objectSpread(_objectSpread({}, normalizedConfig), {}, {
38
- source: _objectSpread(_objectSpread({}, normalizedConfig.source), {}, {
39
- resolveExtensionPrefix: '.web'
86
+ const htmlConfig = __spreadValues({}, normalizedConfig.html);
87
+ if (!htmlConfig.template) {
88
+ htmlConfig.templateByEntries = __spreadValues(__spreadValues({}, htmlConfig.templateByEntries), appContext.htmlTemplates);
89
+ }
90
+ return __spreadProps(__spreadValues({}, normalizedConfig), {
91
+ source: __spreadProps(__spreadValues({}, normalizedConfig.source), {
92
+ resolveExtensionPrefix: ".web"
40
93
  }),
41
94
  output,
42
- dev: {
43
- https: normalizedConfig.dev.https,
44
- assetPrefix: normalizedConfig.dev.assetPrefix
45
- },
46
- html: _objectSpread(_objectSpread({}, normalizedConfig.html), {}, {
47
- templateByEntries: normalizedConfig.html.templateByEntries || appContext.htmlTemplates
95
+ dev: __spreadProps(__spreadValues({}, normalizedConfig.dev), {
96
+ port: (_a = normalizedConfig.server) == null ? void 0 : _a.port
48
97
  }),
49
- performance: _objectSpread(_objectSpread({}, normalizedConfig.performance), {}, {
50
- // `@modern-js/webpack` used to remove moment locale by default
98
+ html: htmlConfig,
99
+ performance: __spreadProps(__spreadValues({}, normalizedConfig.performance), {
51
100
  removeMomentLocale: true
52
101
  })
53
102
  });
54
- function createOutputConfig(config, appContext) {
55
- const defaultCopyPattern = createCopyPattern(appContext, config, 'upload');
56
- const {
57
- copy
58
- } = config.output;
59
- const copyOptions = Array.isArray(copy) ? copy : copy === null || copy === void 0 ? void 0 : copy.patterns;
60
- const builderCopy = [...(copyOptions || []), defaultCopyPattern];
61
- return _objectSpread(_objectSpread({}, config.output), {}, {
103
+ function createOutputConfig(config, appContext2) {
104
+ const defaultCopyPattern = createCopyPattern(appContext2, config, "upload");
105
+ const { copy } = config.output;
106
+ const copyOptions = Array.isArray(copy) ? copy : copy == null ? void 0 : copy.patterns;
107
+ const builderCopy = [...copyOptions || [], defaultCopyPattern];
108
+ return __spreadProps(__spreadValues({}, config.output), {
62
109
  copy: builderCopy,
63
- // We need to do this in the app-tools prepare hook because some files will be generated into the dist directory in the analyze process
64
- cleanDistPath: false,
65
- // `@modern-js/webpack` used to generate asset manifest by default
66
- enableAssetManifest: true,
67
- // compatible the modern-js with fallback behavior
68
- enableAssetFallback: true
110
+ cleanDistPath: false
69
111
  });
70
112
  }
71
113
  }
72
- export function createBuilderOptions(target, appContext) {
73
- // create entries
74
-
114
+ function createBuilderOptions(target, appContext) {
75
115
  const entries = {};
76
- const {
77
- entrypoints = [],
78
- checkedEntries
79
- } = appContext;
80
- for (const {
81
- entryName,
82
- entry
83
- } of entrypoints) {
116
+ const { entrypoints = [], checkedEntries } = appContext;
117
+ for (const { entryName, entry } of entrypoints) {
84
118
  if (checkedEntries && !checkedEntries.includes(entryName)) {
85
119
  continue;
86
120
  }
@@ -93,33 +127,34 @@ export function createBuilderOptions(target, appContext) {
93
127
  return {
94
128
  cwd: appContext.appDirectory,
95
129
  target,
96
- configPath: appContext.configFile || undefined,
130
+ configPath: appContext.configFile || void 0,
97
131
  entry: entries,
98
132
  framework: appContext.metaName
99
133
  };
100
134
  }
101
-
102
- /**
103
- * register builder Plugin by condition
104
- */
105
- async function applyBuilderPlugins(builder, normalizedConfig, appContext, compatPluginConfig) {
106
- if (!normalizedConfig.output.disableNodePolyfill) {
107
- const {
108
- PluginNodePolyfill
109
- } = await import('@modern-js/builder-plugin-node-polyfill');
110
- builder.addPlugins([PluginNodePolyfill()]);
111
- }
112
- if (normalizedConfig.tools.esbuild) {
113
- const {
114
- esbuild: esbuildOptions
115
- } = normalizedConfig.tools;
116
- const {
117
- PluginEsbuild
118
- } = await import('@modern-js/builder-plugin-esbuild');
119
- builder.addPlugins([PluginEsbuild({
120
- loader: false,
121
- minimize: applyOptionsChain({}, esbuildOptions)
122
- })]);
123
- }
124
- builder.addPlugins([PluginCompatModern(appContext, normalizedConfig, compatPluginConfig)]);
125
- }
135
+ function applyBuilderPlugins(builder, normalizedConfig, appContext, compatPluginConfig) {
136
+ return __async(this, null, function* () {
137
+ if (!normalizedConfig.output.disableNodePolyfill) {
138
+ const { PluginNodePolyfill } = yield import("@modern-js/builder-plugin-node-polyfill");
139
+ builder.addPlugins([PluginNodePolyfill()]);
140
+ }
141
+ if (normalizedConfig.tools.esbuild) {
142
+ const { esbuild: esbuildOptions } = normalizedConfig.tools;
143
+ const { PluginEsbuild } = yield import("@modern-js/builder-plugin-esbuild");
144
+ builder.addPlugins([
145
+ PluginEsbuild({
146
+ loader: false,
147
+ minimize: applyOptionsChain({}, esbuildOptions)
148
+ })
149
+ ]);
150
+ }
151
+ builder.addPlugins([
152
+ PluginCompatModern(appContext, normalizedConfig, compatPluginConfig)
153
+ ]);
154
+ });
155
+ }
156
+ export {
157
+ createBuilderForModern,
158
+ createBuilderOptions,
159
+ createBuilderProviderConfig
160
+ };
@@ -0,0 +1,17 @@
1
+ import { slash } from "@modern-js/utils";
2
+ function loader(source) {
3
+ this.cacheable();
4
+ const { target } = this._compiler.options;
5
+ if (target === "node" || Array.isArray(target) && target.includes("node")) {
6
+ return source;
7
+ }
8
+ const { resourcePath } = this;
9
+ const code = `
10
+ export { default } from "${slash(resourcePath)}";
11
+ `;
12
+ return code;
13
+ }
14
+ var routerLoader_default = loader;
15
+ export {
16
+ routerLoader_default as default
17
+ };
@@ -0,0 +1,7 @@
1
+ function loader() {
2
+ return `module.exports = {}`;
3
+ }
4
+ var serverModuleLoader_default = loader;
5
+ export {
6
+ serverModuleLoader_default as default
7
+ };
@@ -1,44 +1,46 @@
1
- import path from 'path';
2
- import { template as lodashTemplate } from '@modern-js/utils/lodash';
3
- import { removeTailSlash } from '@modern-js/utils';
4
- export function createCopyPattern(appContext, config, patternsType, chain) {
5
- const configDir = path.resolve(appContext.appDirectory, config.source.configDir || './config');
6
- const uploadDir = path.posix.join(configDir.replace(/\\/g, '/'), 'upload');
7
- const publicDir = path.posix.join(configDir.replace(/\\/g, '/'), 'public');
1
+ import path from "path";
2
+ import { removeTailSlash } from "@modern-js/utils";
3
+ function createCopyPattern(appContext, config, patternsType, chain) {
4
+ const configDir = path.resolve(
5
+ appContext.appDirectory,
6
+ config.source.configDir || "./config"
7
+ );
8
+ const uploadDir = path.posix.join(configDir.replace(/\\/g, "/"), "upload");
9
+ const publicDir = path.posix.join(configDir.replace(/\\/g, "/"), "public");
8
10
  const minifiedJsRexExp = /\.min\.js/;
9
- const info = file => ({
10
- // If the file name ends with `.min.js`, we assume it's a compressed file.
11
- // So we don't want copy-webpack-plugin to minify it.
12
- // ref: https://github.com/webpack-contrib/copy-webpack-plugin#info
11
+ const info = (file) => ({
13
12
  minimized: minifiedJsRexExp.test(file.sourceFilename)
14
13
  });
15
- if (patternsType === 'public') {
14
+ if (patternsType === "public") {
16
15
  if (!chain) {
17
16
  throw new Error("expect get a webpackChain, but receive 'undefined'");
18
17
  }
19
18
  return {
20
19
  info,
21
- from: '**/*',
22
- to: 'public',
20
+ from: "**/*",
21
+ to: "public",
23
22
  context: publicDir,
24
23
  noErrorOnMissing: true,
25
- // eslint-disable-next-line node/prefer-global/buffer
26
24
  transform: (content, absoluteFrom) => {
27
25
  if (!/\.html?$/.test(absoluteFrom)) {
28
26
  return content;
29
27
  }
30
- return lodashTemplate(content.toString('utf8'))({
31
- assetPrefix: removeTailSlash(chain.output.get('publicPath'))
32
- });
28
+ return content.toString("utf8").replace(
29
+ /<%=\s*assetPrefix\s*%>/g,
30
+ removeTailSlash(chain.output.get("publicPath"))
31
+ );
33
32
  }
34
33
  };
35
34
  } else {
36
35
  return {
37
36
  info,
38
- from: '**/*',
39
- to: 'upload',
37
+ from: "**/*",
38
+ to: "upload",
40
39
  context: uploadDir,
41
40
  noErrorOnMissing: true
42
41
  };
43
42
  }
44
- }
43
+ }
44
+ export {
45
+ createCopyPattern
46
+ };
@@ -1,29 +1,30 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- export class HtmlAsyncChunkPlugin {
1
+ class HtmlAsyncChunkPlugin {
3
2
  constructor(htmlWebpackPlugin) {
4
- _defineProperty(this, "name", void 0);
5
- _defineProperty(this, "htmlWebpackPlugin", void 0);
6
- this.name = 'HtmlAsyncChunkPlugin';
3
+ this.name = "HtmlAsyncChunkPlugin";
7
4
  this.htmlWebpackPlugin = htmlWebpackPlugin;
8
5
  }
9
6
  apply(compiler) {
10
- compiler.hooks.compilation.tap(this.name, compilation => {
11
- const hooks = this.htmlWebpackPlugin.getHooks(compilation);
12
- hooks.alterAssetTagGroups.tap(this.name, assets => {
13
- const tags = [...assets.headTags, ...assets.bodyTags];
14
- for (const tag of tags) {
15
- if (tag.tagName === 'script') {
16
- const {
17
- attributes
18
- } = tag;
19
- if (attributes && attributes.defer === true) {
20
- attributes.async = true;
21
- delete attributes.defer;
7
+ compiler.hooks.compilation.tap(
8
+ this.name,
9
+ (compilation) => {
10
+ const hooks = this.htmlWebpackPlugin.getHooks(compilation);
11
+ hooks.alterAssetTagGroups.tap(this.name, (assets) => {
12
+ const tags = [...assets.headTags, ...assets.bodyTags];
13
+ for (const tag of tags) {
14
+ if (tag.tagName === "script") {
15
+ const { attributes } = tag;
16
+ if (attributes && attributes.defer === true) {
17
+ attributes.async = true;
18
+ delete attributes.defer;
19
+ }
22
20
  }
23
21
  }
24
- }
25
- return assets;
26
- });
27
- });
22
+ return assets;
23
+ });
24
+ }
25
+ );
28
26
  }
29
- }
27
+ }
28
+ export {
29
+ HtmlAsyncChunkPlugin
30
+ };
@@ -1,33 +1,37 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- export class BottomTemplatePlugin {
1
+ class BottomTemplatePlugin {
3
2
  constructor(htmlWebpackPlugin) {
4
- _defineProperty(this, "htmlWebpackPlugin", void 0);
5
- _defineProperty(this, "bottomTemplateReg", /<!--<\?-\s*bottomTemplate\s*\?>-->/);
6
- _defineProperty(this, "bodyRegExp", /(<\/\s*body\s*>)/i);
7
- _defineProperty(this, "name", void 0);
3
+ this.bottomTemplateReg = /<!--<\?-\s*bottomTemplate\s*\?>-->/;
4
+ this.bodyRegExp = /(<\/\s*body\s*>)/i;
8
5
  this.htmlWebpackPlugin = htmlWebpackPlugin;
9
- this.name = 'bottom-template';
6
+ this.name = "bottom-template";
10
7
  }
11
8
  apply(compiler) {
12
- compiler.hooks.compilation.tap(this.name, compilation => {
13
- this.htmlWebpackPlugin.getHooks(compilation).beforeEmit.tap(this.name, data => {
14
- var _data$plugin$options;
15
- if (!((_data$plugin$options = data.plugin.options) !== null && _data$plugin$options !== void 0 && _data$plugin$options.__internal__)) {
16
- return data;
17
- }
18
- // 含有 <!--<?- bottomTemplate ?>--> 占位符时才需要注入 bottom.html
19
- if (this.bottomTemplateReg.test(data.html)) {
20
- // 清空占位符
21
- data.html = data.html.replace(this.bottomTemplateReg, '');
22
- const {
23
- bottomTemplate
24
- } = data.plugin.options;
25
- if (bottomTemplate) {
26
- data.html = data.html.replace(this.bodyRegExp, match => `\n${bottomTemplate}\n${match}`);
9
+ compiler.hooks.compilation.tap(
10
+ this.name,
11
+ (compilation) => {
12
+ this.htmlWebpackPlugin.getHooks(compilation).beforeEmit.tap(this.name, (data) => {
13
+ var _a;
14
+ if (!((_a = data.plugin.options) == null ? void 0 : _a.__internal__)) {
15
+ return data;
16
+ }
17
+ if (this.bottomTemplateReg.test(data.html)) {
18
+ data.html = data.html.replace(this.bottomTemplateReg, "");
19
+ const { bottomTemplate } = data.plugin.options;
20
+ if (bottomTemplate) {
21
+ data.html = data.html.replace(
22
+ this.bodyRegExp,
23
+ (match) => `
24
+ ${bottomTemplate}
25
+ ${match}`
26
+ );
27
+ }
27
28
  }
28
- }
29
- return data;
30
- });
31
- });
29
+ return data;
30
+ });
31
+ }
32
+ );
32
33
  }
33
- }
34
+ }
35
+ export {
36
+ BottomTemplatePlugin
37
+ };
@@ -1,97 +1,113 @@
1
- function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
2
- import path from 'path';
3
- import { fs, ROUTE_MANIFEST, logger, ROUTE_MINIFEST_FILE } from '@modern-js/utils';
4
- const PLUGIN_NAME = 'ModernjsRoutePlugin';
5
- export default class RouterPlugin {
6
- constructor(options) {
7
- _defineProperty(this, "existNestedRoutes", void 0);
8
- this.existNestedRoutes = options.existNestedRoutes;
9
- }
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 path from "path";
22
+ import {
23
+ fs,
24
+ ROUTE_MANIFEST,
25
+ logger,
26
+ ROUTE_MINIFEST_FILE
27
+ } from "@modern-js/utils";
28
+ const PLUGIN_NAME = "ModernjsRoutePlugin";
29
+ class RouterPlugin {
10
30
  apply(compiler) {
11
- const {
12
- existNestedRoutes
13
- } = this;
14
- const {
15
- target
16
- } = compiler.options;
17
- if (target === 'node' || Array.isArray(target) && target.includes('node')) {
18
- return;
19
- }
20
- if (!existNestedRoutes) {
31
+ const { target } = compiler.options;
32
+ if (target === "node" || Array.isArray(target) && target.includes("node")) {
21
33
  return;
22
34
  }
23
- const {
24
- webpack
25
- } = compiler;
26
- const {
27
- Compilation,
28
- sources
29
- } = webpack;
30
- const {
31
- RawSource
32
- } = sources;
33
- const {
34
- PROCESS_ASSETS_STAGE_REPORT
35
- } = Compilation;
35
+ const { webpack } = compiler;
36
+ const { Compilation, sources } = webpack;
37
+ const { RawSource } = sources;
38
+ const { PROCESS_ASSETS_STAGE_REPORT } = Compilation;
36
39
  const outputPath = compiler.options.output.path;
37
- const newAssetsMap = new Map();
38
- const normalizePath = path => {
39
- if (!path.endsWith('/')) {
40
- return `${path}/`;
40
+ const newAssetsMap = /* @__PURE__ */ new Map();
41
+ const normalizePath = (path2) => {
42
+ if (!path2.endsWith("/")) {
43
+ return `${path2}/`;
41
44
  }
42
- return path;
45
+ return path2;
43
46
  };
44
- compiler.hooks.thisCompilation.tap(PLUGIN_NAME, compilation => {
45
- compilation.hooks.processAssets.tapPromise({
46
- name: PLUGIN_NAME,
47
- stage: PROCESS_ASSETS_STAGE_REPORT
48
- }, async () => {
49
- const stats = compilation.getStats().toJson({
50
- chunkGroups: true,
51
- chunks: true
52
- });
53
- const {
54
- publicPath
55
- } = stats;
56
- const routeAssets = {};
57
- const {
58
- namedChunkGroups,
59
- assetsByChunkName
60
- } = stats;
61
- if (!namedChunkGroups || !assetsByChunkName) {
62
- logger.warn('Route manifest does not exist, performance will be affected');
63
- return;
64
- }
65
- for (const [name, chunkGroup] of Object.entries(namedChunkGroups)) {
66
- routeAssets[name] = {
67
- chunkIds: chunkGroup.chunks,
68
- assets: assetsByChunkName[name].map(item => publicPath ? normalizePath(publicPath) + item : item)
47
+ compiler.hooks.thisCompilation.tap(PLUGIN_NAME, (compilation) => {
48
+ compilation.hooks.processAssets.tapPromise(
49
+ {
50
+ name: PLUGIN_NAME,
51
+ stage: PROCESS_ASSETS_STAGE_REPORT
52
+ },
53
+ () => __async(this, null, function* () {
54
+ const stats = compilation.getStats().toJson({
55
+ chunkGroups: true,
56
+ chunks: true
57
+ });
58
+ const { publicPath } = stats;
59
+ const routeAssets = {};
60
+ const { namedChunkGroups, assetsByChunkName } = stats;
61
+ if (!namedChunkGroups || !assetsByChunkName) {
62
+ logger.warn(
63
+ "Route manifest does not exist, performance will be affected"
64
+ );
65
+ return;
66
+ }
67
+ for (const [name, chunkGroup] of Object.entries(namedChunkGroups)) {
68
+ if (assetsByChunkName[name]) {
69
+ routeAssets[name] = {
70
+ chunkIds: chunkGroup.chunks,
71
+ assets: assetsByChunkName[name].map(
72
+ (item) => publicPath ? normalizePath(publicPath) + item : item
73
+ )
74
+ };
75
+ }
76
+ }
77
+ const manifest = {
78
+ routeAssets
69
79
  };
70
- }
71
- const manifest = {
72
- routeAssets
73
- };
74
- const injectedContent = `
80
+ const injectedContent = `
75
81
  ;(function(){
76
82
  window.${ROUTE_MANIFEST} = ${JSON.stringify(manifest)};
77
83
  })();
78
84
  `;
79
- const entrypointsArray = Array.from(compilation.entrypoints.entries());
80
- const entryChunkIds = entrypointsArray.map(entrypoint => entrypoint[0]);
81
- const entryChunks = [...compilation.chunks].filter(chunk => {
82
- return entryChunkIds.includes(chunk.name);
83
- });
84
- const entryChunkFiles = entryChunks.map(chunk => [...chunk.files][0]);
85
- for (const file of entryChunkFiles) {
86
- const asset = compilation.assets[file];
87
- const newContent = `${injectedContent}${asset.source().toString()}`;
88
- newAssetsMap.set(path.join(outputPath, file), newContent);
89
- compilation.updateAsset(file, new RawSource(newContent));
90
- }
91
- const filename = path.join(outputPath, ROUTE_MINIFEST_FILE);
92
- await fs.ensureFile(filename);
93
- await fs.writeFile(filename, JSON.stringify(manifest, null, 2));
94
- });
85
+ const entrypointsArray = Array.from(
86
+ compilation.entrypoints.entries()
87
+ );
88
+ const entryChunkIds = entrypointsArray.map(
89
+ (entrypoint) => entrypoint[0]
90
+ );
91
+ const entryChunks = [...compilation.chunks].filter((chunk) => {
92
+ return entryChunkIds.includes(chunk.name);
93
+ });
94
+ const entryChunkFiles = entryChunks.map(
95
+ (chunk) => [...chunk.files].find((fname) => fname.includes(".js"))
96
+ );
97
+ for (const file of entryChunkFiles) {
98
+ const asset = compilation.assets[file];
99
+ const newContent = `${injectedContent}${asset.source().toString()}`;
100
+ newAssetsMap.set(path.join(outputPath, file), newContent);
101
+ compilation.updateAsset(file, new RawSource(newContent));
102
+ }
103
+ const filename = path.join(outputPath, ROUTE_MINIFEST_FILE);
104
+ yield fs.ensureFile(filename);
105
+ yield fs.writeFile(filename, JSON.stringify(manifest, null, 2));
106
+ })
107
+ );
95
108
  });
96
109
  }
97
- }
110
+ }
111
+ export {
112
+ RouterPlugin as default
113
+ };