@modern-js/app-tools 2.21.1 → 2.22.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 (82) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/dist/cjs/analyze/constants.js +66 -22
  3. package/dist/cjs/analyze/generateCode.js +48 -24
  4. package/dist/cjs/analyze/getBundleEntry.js +3 -1
  5. package/dist/cjs/analyze/getClientRoutes/getRoutes.js +3 -1
  6. package/dist/cjs/analyze/getClientRoutes/getRoutesLegacy.js +3 -1
  7. package/dist/cjs/analyze/getClientRoutes/index.js +6 -2
  8. package/dist/cjs/analyze/getClientRoutes/utils.js +12 -4
  9. package/dist/cjs/analyze/getFileSystemEntry.js +3 -1
  10. package/dist/cjs/analyze/getHtmlTemplate.js +3 -1
  11. package/dist/cjs/analyze/getServerRoutes.js +3 -1
  12. package/dist/cjs/analyze/index.js +13 -2
  13. package/dist/cjs/analyze/isDefaultExportFunction.js +3 -1
  14. package/dist/cjs/analyze/makeLegalIdentifier.js +3 -1
  15. package/dist/cjs/analyze/nestedRoutes.js +3 -1
  16. package/dist/cjs/analyze/templates.js +18 -6
  17. package/dist/cjs/analyze/utils.js +24 -8
  18. package/dist/cjs/builder/builder-rspack/adapterCopy.js +3 -1
  19. package/dist/cjs/builder/builder-rspack/index.js +3 -1
  20. package/dist/cjs/builder/builder-webpack/adapterModern.js +3 -1
  21. package/dist/cjs/builder/builder-webpack/createCopyPattern.js +6 -2
  22. package/dist/cjs/builder/builder-webpack/index.js +3 -1
  23. package/dist/cjs/builder/generator/createBuilderOptions.js +7 -4
  24. package/dist/cjs/builder/generator/createBuilderProviderConfig.js +5 -3
  25. package/dist/cjs/builder/generator/getBuilderTargets.js +3 -1
  26. package/dist/cjs/builder/generator/index.js +3 -1
  27. package/dist/cjs/builder/index.js +3 -1
  28. package/dist/cjs/builder/shared/builderPlugins/adapterBasic.js +6 -2
  29. package/dist/cjs/builder/shared/builderPlugins/adapterHtml.js +3 -1
  30. package/dist/cjs/builder/shared/builderPlugins/adapterSSR.js +3 -1
  31. package/dist/cjs/builder/shared/bundlerPlugins/HtmlAsyncChunkPlugin.js +3 -1
  32. package/dist/cjs/builder/shared/bundlerPlugins/HtmlBottomTemplate.js +3 -1
  33. package/dist/cjs/builder/shared/bundlerPlugins/RouterPlugin.js +29 -6
  34. package/dist/cjs/builder/shared/createCopyInfo.js +3 -1
  35. package/dist/cjs/builder/shared/loaders/serverModuleLoader.js +3 -1
  36. package/dist/cjs/commands/build.js +3 -1
  37. package/dist/cjs/commands/deploy.js +3 -1
  38. package/dist/cjs/commands/dev.js +3 -1
  39. package/dist/cjs/commands/inspect.js +3 -1
  40. package/dist/cjs/commands/serve.js +3 -1
  41. package/dist/cjs/config/default.js +6 -2
  42. package/dist/cjs/config/initialize/index.js +3 -1
  43. package/dist/cjs/config/initialize/inits.js +9 -3
  44. package/dist/cjs/config/legacy/createHtmlConfig.js +3 -1
  45. package/dist/cjs/config/legacy/createOutputConfig.js +3 -1
  46. package/dist/cjs/config/legacy/createSourceConfig.js +3 -1
  47. package/dist/cjs/config/legacy/createToolsConfig.js +3 -1
  48. package/dist/cjs/config/legacy/index.js +6 -2
  49. package/dist/cjs/defineConfig.js +6 -2
  50. package/dist/cjs/exports/server.js +3 -1
  51. package/dist/cjs/hooks.js +3 -1
  52. package/dist/cjs/index.js +12 -4
  53. package/dist/cjs/initialize/index.js +3 -1
  54. package/dist/cjs/locale/en.js +3 -1
  55. package/dist/cjs/locale/index.js +6 -2
  56. package/dist/cjs/locale/zh.js +3 -1
  57. package/dist/cjs/schema/Schema.js +3 -1
  58. package/dist/cjs/schema/index.js +6 -2
  59. package/dist/cjs/schema/legacy.js +3 -1
  60. package/dist/cjs/utils/config.js +12 -4
  61. package/dist/cjs/utils/createServer.js +15 -5
  62. package/dist/cjs/utils/env.js +3 -1
  63. package/dist/cjs/utils/generateWatchFiles.js +6 -2
  64. package/dist/cjs/utils/getSelectedEntries.js +3 -1
  65. package/dist/cjs/utils/getServerInternalPlugins.js +3 -1
  66. package/dist/cjs/utils/printInstructions.js +3 -1
  67. package/dist/cjs/utils/restart.js +3 -1
  68. package/dist/cjs/utils/routes.js +3 -1
  69. package/dist/esm/analyze/generateCode.js +131 -75
  70. package/dist/esm/analyze/index.js +17 -3
  71. package/dist/esm/builder/generator/createBuilderOptions.js +4 -3
  72. package/dist/esm/builder/generator/createBuilderProviderConfig.js +1 -1
  73. package/dist/esm/builder/shared/bundlerPlugins/RouterPlugin.js +126 -118
  74. package/dist/esm-node/analyze/generateCode.js +39 -22
  75. package/dist/esm-node/analyze/index.js +10 -1
  76. package/dist/esm-node/builder/generator/createBuilderOptions.js +4 -3
  77. package/dist/esm-node/builder/generator/createBuilderProviderConfig.js +2 -2
  78. package/dist/esm-node/builder/shared/bundlerPlugins/RouterPlugin.js +27 -6
  79. package/dist/types/analyze/generateCode.d.ts +19 -2
  80. package/dist/types/builder/shared/bundlerPlugins/RouterPlugin.d.ts +7 -0
  81. package/dist/types/types/hooks.d.ts +1 -0
  82. package/package.json +24 -24
@@ -53,11 +53,14 @@ export const generateCode = async (appContext, config, entrypoints, api) => {
53
53
  const { internalDirectory, srcDirectory, internalDirAlias, internalSrcAlias, packageName } = appContext;
54
54
  const hookRunners = api.useHookRunners();
55
55
  const isV5 = isRouterV5(config);
56
- const { mountId } = config.html;
57
56
  const getRoutes = isV5 ? getClientRoutesLegacy : getClientRoutes;
57
+ const importsStatemets = /* @__PURE__ */ new Map();
58
58
  await Promise.all(entrypoints.map(generateEntryCode));
59
+ return {
60
+ importsStatemets
61
+ };
59
62
  async function generateEntryCode(entrypoint) {
60
- const { entryName, isAutoMount, customBootstrap, fileSystemRoutes } = entrypoint;
63
+ const { entryName, isAutoMount, fileSystemRoutes } = entrypoint;
61
64
  if (isAutoMount) {
62
65
  if (fileSystemRoutes) {
63
66
  var _config_output;
@@ -99,7 +102,7 @@ export const generateCode = async (appContext, config, entrypoints, api) => {
99
102
  process.exit(1);
100
103
  }
101
104
  }
102
- const { code: code2 } = await hookRunners.beforeGenerateRoutes({
105
+ const { code } = await hookRunners.beforeGenerateRoutes({
103
106
  entrypoint,
104
107
  code: await templates.fileSystemRoutes({
105
108
  routes,
@@ -112,20 +115,20 @@ export const generateCode = async (appContext, config, entrypoints, api) => {
112
115
  });
113
116
  if (entrypoint.nestedRoutesEntry && isUseSSRBundle(config2)) {
114
117
  const routesServerFile = getServerLoadersFile(internalDirectory, entryName);
115
- const code3 = templates.routesForServer({
118
+ const code2 = templates.routesForServer({
116
119
  routes
117
120
  });
118
121
  await fs.ensureFile(routesServerFile);
119
- await fs.writeFile(routesServerFile, code3);
122
+ await fs.writeFile(routesServerFile, code2);
120
123
  }
121
124
  const serverLoaderCombined = templates.ssrLoaderCombinedModule(entrypoints, entrypoint, config2, appContext);
122
125
  if (serverLoaderCombined) {
123
126
  const serverLoaderFile = getServerCombinedModueFile(internalDirectory, entryName);
124
127
  await fs.outputFile(serverLoaderFile, serverLoaderCombined);
125
128
  }
126
- fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME}`), code2, "utf8");
129
+ fs.outputFileSync(path.resolve(internalDirectory, `./${entryName}/${FILE_SYSTEM_ROUTES_FILE_NAME}`), code, "utf8");
127
130
  }
128
- const { imports: importStatements } = await hookRunners.modifyEntryImports({
131
+ const { imports } = await hookRunners.modifyEntryImports({
129
132
  entrypoint,
130
133
  imports: getDefaultImports({
131
134
  entrypoint,
@@ -135,9 +138,23 @@ export const generateCode = async (appContext, config, entrypoints, api) => {
135
138
  internalDirectory
136
139
  })
137
140
  });
141
+ importsStatemets.set(entryName, imports);
142
+ const entryFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_FILE_NAME}`);
143
+ entrypoint.internalEntry = entryFile;
144
+ }
145
+ }
146
+ };
147
+ export const generateIndexCode = async ({ appContext, api, entrypoints, config, importsStatemets, bundlerConfigs }) => {
148
+ const hookRunners = api.useHookRunners();
149
+ const { mountId } = config.html;
150
+ const { internalDirectory, packageName } = appContext;
151
+ await Promise.all(entrypoints.map(async (entrypoint) => {
152
+ const { entryName, isAutoMount, customBootstrap, fileSystemRoutes } = entrypoint;
153
+ if (isAutoMount) {
138
154
  const { plugins } = await hookRunners.modifyEntryRuntimePlugins({
139
155
  entrypoint,
140
- plugins: []
156
+ plugins: [],
157
+ bundlerConfigs
141
158
  });
142
159
  const { code: renderFunction } = await hookRunners.modifyEntryRenderFunction({
143
160
  entrypoint,
@@ -151,31 +168,31 @@ export const generateCode = async (appContext, config, entrypoints, api) => {
151
168
  entrypoint,
152
169
  exportStatement: "export default AppWrapper;"
153
170
  });
171
+ const imports = importsStatemets.get(entryName);
154
172
  const code = templates.index({
155
173
  mountId,
156
- imports: createImportStatements(importStatements),
174
+ imports: createImportStatements(imports),
157
175
  renderFunction,
158
176
  exportStatement
159
177
  });
160
178
  const entryFile = path.resolve(internalDirectory, `./${entryName}/${ENTRY_POINT_FILE_NAME}`);
161
- entrypoint.entry = entryFile;
162
179
  if (config.source.enableAsyncEntry) {
163
180
  let rawAsyncEntryCode = `import('./${ENTRY_BOOTSTRAP_FILE_NAME}');`;
164
181
  const ssr = getEntryOptions(entryName, config.server.ssr, config.server.ssrByEntries, packageName);
165
182
  if (ssr) {
166
183
  rawAsyncEntryCode = `
167
- export const ${SERVER_RENDER_FUNCTION_NAME} = async (...args) => {
168
- let entry = await ${rawAsyncEntryCode};
169
- if (entry.default instanceof Promise){
170
- entry = await entry.default;
171
- return entry.default.${SERVER_RENDER_FUNCTION_NAME}.apply(null, args);
172
- }
173
- return entry.${SERVER_RENDER_FUNCTION_NAME}.apply(null, args);
174
- };
175
- if(typeof window!=='undefined'){
176
- ${rawAsyncEntryCode}
184
+ export const ${SERVER_RENDER_FUNCTION_NAME} = async (...args) => {
185
+ let entry = await ${rawAsyncEntryCode};
186
+ if (entry.default instanceof Promise){
187
+ entry = await entry.default;
188
+ return entry.default.${SERVER_RENDER_FUNCTION_NAME}.apply(null, args);
177
189
  }
178
- `;
190
+ return entry.${SERVER_RENDER_FUNCTION_NAME}.apply(null, args);
191
+ };
192
+ if(typeof window!=='undefined'){
193
+ ${rawAsyncEntryCode}
194
+ }
195
+ `;
179
196
  }
180
197
  const { code: asyncEntryCode } = await hookRunners.modifyAsyncEntry({
181
198
  entrypoint,
@@ -188,5 +205,5 @@ export const generateCode = async (appContext, config, entrypoints, api) => {
188
205
  fs.outputFileSync(entryFile, code, "utf8");
189
206
  }
190
207
  }
191
- }
208
+ }));
192
209
  };
@@ -9,6 +9,7 @@ import { initialNormalizedConfig } from "../config";
9
9
  import { createBuilderGenerator } from "../builder";
10
10
  import { isPageComponentFile, parseModule, replaceWithAlias } from "./utils";
11
11
  import { APP_CONFIG_NAME, APP_INIT_EXPORTED, APP_INIT_IMPORTED } from "./constants";
12
+ import { generateIndexCode } from "./generateCode";
12
13
  const debug = createDebugger("plugin-analyze");
13
14
  export default ({ bundler }) => {
14
15
  return {
@@ -67,7 +68,7 @@ export default ({ bundler }) => {
67
68
  nestedRouteEntries = entrypoints.map((point) => point.nestedRoutesEntry).filter(Boolean);
68
69
  pagesDir = entrypoints.map((point) => point.entry).filter((entry) => entry && !path.extname(entry)).concat(nestedRouteEntries);
69
70
  originEntrypoints = cloneDeep(entrypoints);
70
- await generateCode(appContext, resolvedConfig, entrypoints, api);
71
+ const { importsStatemets } = await generateCode(appContext, resolvedConfig, entrypoints, api);
71
72
  const htmlTemplates = await getHtmlTemplate(entrypoints, api, {
72
73
  appContext,
73
74
  config: resolvedConfig
@@ -130,6 +131,14 @@ export default ({ bundler }) => {
130
131
  },
131
132
  async onBeforeCreateCompiler({ bundlerConfigs }) {
132
133
  const hookRunners2 = api.useHookRunners();
134
+ await generateIndexCode({
135
+ appContext,
136
+ config: resolvedConfig,
137
+ entrypoints,
138
+ api,
139
+ importsStatemets,
140
+ bundlerConfigs
141
+ });
133
142
  await hookRunners2.beforeCreateCompiler({
134
143
  bundlerConfigs
135
144
  });
@@ -1,15 +1,16 @@
1
1
  export function createBuilderOptions(target, appContext) {
2
2
  const entries = {};
3
3
  const { entrypoints = [], checkedEntries } = appContext;
4
- for (const { entryName, entry } of entrypoints) {
4
+ for (const { entryName, internalEntry, entry } of entrypoints) {
5
5
  if (checkedEntries && !checkedEntries.includes(entryName)) {
6
6
  continue;
7
7
  }
8
+ const finalEntry = internalEntry || entry;
8
9
  if (entryName in entries) {
9
- entries[entryName].push(entry);
10
+ entries[entryName].push(finalEntry);
10
11
  } else {
11
12
  entries[entryName] = [
12
- entry
13
+ finalEntry
13
14
  ];
14
15
  }
15
16
  }
@@ -4,8 +4,8 @@ export function createBuilderProviderConfig(resolveConfig, appContext, modifyBui
4
4
  };
5
5
  if (!htmlConfig.template) {
6
6
  htmlConfig.templateByEntries = {
7
- ...htmlConfig.templateByEntries,
8
- ...appContext.htmlTemplates
7
+ ...appContext.htmlTemplates,
8
+ ...htmlConfig.templateByEntries
9
9
  };
10
10
  }
11
11
  const config = {
@@ -1,5 +1,6 @@
1
1
  import path from "path";
2
- import { fs, ROUTE_MANIFEST_FILE } from "@modern-js/utils";
2
+ import { mergeWith } from "@modern-js/utils/lodash";
3
+ import { ROUTE_MANIFEST_FILE } from "@modern-js/utils";
3
4
  import { ROUTE_MANIFEST } from "@modern-js/utils/universal/constants";
4
5
  const PLUGIN_NAME = "ModernjsRoutePlugin";
5
6
  export class RouterPlugin {
@@ -41,10 +42,15 @@ export class RouterPlugin {
41
42
  if (!namedChunkGroups) {
42
43
  return;
43
44
  }
45
+ const prevManifestAsset = compilation.getAsset(ROUTE_MANIFEST_FILE);
46
+ const prevManifestStr = prevManifestAsset ? prevManifestAsset.source.source().toString() : JSON.stringify({
47
+ routeAssets: {}
48
+ });
49
+ const prevManifest = JSON.parse(prevManifestStr);
44
50
  for (const [name, chunkGroup] of Object.entries(namedChunkGroups)) {
45
51
  const assets = chunkGroup.assets.map((asset) => {
46
- const filename2 = asset.name;
47
- return publicPath ? normalizePath(publicPath) + filename2 : filename2;
52
+ const filename = asset.name;
53
+ return publicPath ? normalizePath(publicPath) + filename : filename;
48
54
  });
49
55
  const referenceCssAssets = assets.filter((asset) => /\.css$/.test(asset));
50
56
  routeAssets[name] = {
@@ -52,6 +58,14 @@ export class RouterPlugin {
52
58
  assets,
53
59
  referenceCssAssets
54
60
  };
61
+ if (prevManifest.routeAssets[name]) {
62
+ mergeWith(routeAssets[name], prevManifest.routeAssets[name], (obj, source) => {
63
+ if (Array.isArray(obj)) {
64
+ return obj.concat(source);
65
+ }
66
+ return Object.assign(source, obj);
67
+ });
68
+ }
55
69
  }
56
70
  const manifest = {
57
71
  routeAssets
@@ -93,9 +107,16 @@ export class RouterPlugin {
93
107
  void 0
94
108
  );
95
109
  }
96
- const filename = path.join(outputPath, ROUTE_MANIFEST_FILE);
97
- await fs.ensureFile(filename);
98
- await fs.writeFile(filename, JSON.stringify(manifest, null, 2));
110
+ if (prevManifestAsset) {
111
+ compilation.updateAsset(
112
+ ROUTE_MANIFEST_FILE,
113
+ new RawSource(JSON.stringify(manifest, null, 2)),
114
+ // FIXME: The arguments third of updatgeAsset is a optional function in webpack.
115
+ void 0
116
+ );
117
+ } else {
118
+ compilation.emitAsset(ROUTE_MANIFEST_FILE, new RawSource(JSON.stringify(manifest, null, 2)));
119
+ }
99
120
  });
100
121
  });
101
122
  }
@@ -1,5 +1,22 @@
1
1
  import { IAppContext, PluginAPI } from '@modern-js/core';
2
2
  import type { Entrypoint } from '@modern-js/types';
3
- import { AppNormalizedConfig, AppTools, ImportStatement } from '../types';
3
+ import { AppNormalizedConfig, AppTools, ImportStatement, Rspack, webpack } from '../types';
4
4
  export declare const createImportStatements: (statements: ImportStatement[]) => string;
5
- export declare const generateCode: (appContext: IAppContext, config: AppNormalizedConfig<'shared'>, entrypoints: Entrypoint[], api: PluginAPI<AppTools<'shared'>>) => Promise<void>;
5
+ export declare const generateCode: (appContext: IAppContext, config: AppNormalizedConfig<'shared'>, entrypoints: Entrypoint[], api: PluginAPI<AppTools<'shared'>>) => Promise<{
6
+ importsStatemets: Map<string, ImportStatement[]>;
7
+ }>;
8
+ export declare const generateIndexCode: ({
9
+ appContext,
10
+ api,
11
+ entrypoints,
12
+ config,
13
+ importsStatemets,
14
+ bundlerConfigs
15
+ }: {
16
+ appContext: IAppContext;
17
+ api: PluginAPI<AppTools<'shared'>>;
18
+ entrypoints: Entrypoint[];
19
+ config: AppNormalizedConfig<'shared'>;
20
+ importsStatemets: Map<string, ImportStatement[]>;
21
+ bundlerConfigs?: webpack.Configuration[] | Rspack.RspackOptions[] | undefined;
22
+ }) => Promise<void>;
@@ -1,5 +1,12 @@
1
1
  import type { webpack } from '@modern-js/builder-webpack-provider';
2
2
  import type { Rspack } from '@modern-js/builder-rspack-provider';
3
+ export interface RouteAssets {
4
+ [routeId: string]: {
5
+ chunkIds?: (string | number)[];
6
+ assets?: string[];
7
+ referenceCssAssets?: string[];
8
+ };
9
+ }
3
10
  export declare class RouterPlugin {
4
11
  apply(compiler: Rspack.Compiler | webpack.Compiler): void;
5
12
  }
@@ -31,6 +31,7 @@ export type AppToolsHooks<B extends Bundler = 'webpack'> = {
31
31
  modifyEntryRuntimePlugins: AsyncWaterfall<{
32
32
  entrypoint: Entrypoint;
33
33
  plugins: RuntimePlugin[];
34
+ bundlerConfigs?: B extends 'rspack' ? Rspack.Configuration[] : webpack.Configuration[];
34
35
  }>;
35
36
  modifyEntryRenderFunction: AsyncWaterfall<{
36
37
  entrypoint: Entrypoint;
package/package.json CHANGED
@@ -15,7 +15,7 @@
15
15
  "modern",
16
16
  "modern.js"
17
17
  ],
18
- "version": "2.21.1",
18
+ "version": "2.22.0",
19
19
  "jsnext:source": "./src/index.ts",
20
20
  "types": "./dist/types/index.d.ts",
21
21
  "main": "./dist/cjs/index.js",
@@ -73,23 +73,23 @@
73
73
  "esbuild": "0.15.7",
74
74
  "rspack-plugin-virtual-module": "0.1.0",
75
75
  "@swc/helpers": "0.5.1",
76
- "@modern-js/builder": "2.21.1",
77
- "@modern-js/builder-plugin-esbuild": "2.21.1",
78
- "@modern-js/builder-plugin-node-polyfill": "2.21.1",
79
- "@modern-js/builder-shared": "2.21.1",
80
- "@modern-js/builder-webpack-provider": "2.21.1",
81
- "@modern-js/core": "2.21.1",
82
- "@modern-js/new-action": "2.21.1",
83
- "@modern-js/node-bundle-require": "2.21.1",
84
- "@modern-js/plugin": "2.21.1",
85
- "@modern-js/plugin-data-loader": "2.21.1",
86
- "@modern-js/plugin-i18n": "2.21.1",
87
- "@modern-js/plugin-lint": "2.21.1",
88
- "@modern-js/prod-server": "2.21.1",
89
- "@modern-js/server": "2.21.1",
90
- "@modern-js/types": "2.21.1",
91
- "@modern-js/upgrade": "2.21.1",
92
- "@modern-js/utils": "2.21.1"
76
+ "@modern-js/builder": "2.22.0",
77
+ "@modern-js/builder-plugin-esbuild": "2.22.0",
78
+ "@modern-js/builder-plugin-node-polyfill": "2.22.0",
79
+ "@modern-js/builder-shared": "2.22.0",
80
+ "@modern-js/builder-webpack-provider": "2.22.0",
81
+ "@modern-js/core": "2.22.0",
82
+ "@modern-js/new-action": "2.22.0",
83
+ "@modern-js/node-bundle-require": "2.22.0",
84
+ "@modern-js/plugin": "2.22.0",
85
+ "@modern-js/plugin-data-loader": "2.22.0",
86
+ "@modern-js/plugin-i18n": "2.22.0",
87
+ "@modern-js/plugin-lint": "2.22.0",
88
+ "@modern-js/prod-server": "2.22.0",
89
+ "@modern-js/server": "2.22.0",
90
+ "@modern-js/types": "2.22.0",
91
+ "@modern-js/upgrade": "2.22.0",
92
+ "@modern-js/utils": "2.22.0"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@types/babel__traverse": "^7.14.2",
@@ -98,14 +98,14 @@
98
98
  "jest": "^29",
99
99
  "typescript": "^5",
100
100
  "webpack": "^5.82.1",
101
- "@modern-js/builder-plugin-swc": "2.21.1",
102
- "@modern-js/builder-rspack-provider": "2.21.1",
103
- "@modern-js/server-core": "2.21.1",
104
- "@scripts/jest-config": "2.21.1",
105
- "@scripts/build": "2.21.1"
101
+ "@modern-js/builder-rspack-provider": "2.22.0",
102
+ "@scripts/jest-config": "2.22.0",
103
+ "@modern-js/server-core": "2.22.0",
104
+ "@scripts/build": "2.22.0",
105
+ "@modern-js/builder-plugin-swc": "2.22.0"
106
106
  },
107
107
  "peerDependencies": {
108
- "@modern-js/builder-rspack-provider": "^2.21.1"
108
+ "@modern-js/builder-rspack-provider": "^2.22.0"
109
109
  },
110
110
  "peerDependenciesMeta": {
111
111
  "@modern-js/builder-rspack-provider": {