@umijs/plugins 4.0.0-canary.20230417.1 → 4.0.0-canary.20230424.1
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.
- package/dist/antd.js +12 -6
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +30 -0
- package/dist/layout.js +10 -5
- package/dist/locale.js +6 -4
- package/dist/mf.js +3 -1
- package/dist/qiankun/slave.js +26 -12
- package/libs/qiankun/master/MicroApp.tsx +27 -23
- package/package.json +4 -4
- package/{tpls/antd-runtime.ts.tpl → templates/antd/runtime.ts.tpl} +33 -20
- /package/{libs → templates}/locale/SelectLang.tpl +0 -0
- /package/{libs → templates}/locale/locale.tpl +0 -0
- /package/{libs → templates}/locale/localeExports.tpl +0 -0
- /package/{libs → templates}/locale/runtime.tpl +0 -0
- /package/{tpls/mf-runtime.ts.tpl → templates/mf/runtime.ts.tpl} +0 -0
package/dist/antd.js
CHANGED
|
@@ -36,8 +36,10 @@ var import_assert = __toESM(require("assert"));
|
|
|
36
36
|
var import_path = require("path");
|
|
37
37
|
var import_umi = require("umi");
|
|
38
38
|
var import_plugin_utils = require("umi/plugin-utils");
|
|
39
|
+
var import_constants = require("./constants");
|
|
39
40
|
var import_resolveProjectDep = require("./utils/resolveProjectDep");
|
|
40
41
|
var import_withTmpPath = require("./utils/withTmpPath");
|
|
42
|
+
var ANTD_TEMPLATES_DIR = (0, import_path.join)(import_constants.TEMPLATES_DIR, "antd");
|
|
41
43
|
var antd_default = (api) => {
|
|
42
44
|
let pkgPath;
|
|
43
45
|
let antdVersion = "4.0.0";
|
|
@@ -176,7 +178,7 @@ var antd_default = (api) => {
|
|
|
176
178
|
configProvider: withConfigProvider && JSON.stringify(api.config.antd.configProvider),
|
|
177
179
|
appConfig: appComponentAvailable && JSON.stringify(api.config.antd.appConfig)
|
|
178
180
|
},
|
|
179
|
-
tplPath: (0, import_path.join)(
|
|
181
|
+
tplPath: (0, import_plugin_utils.winPath)((0, import_path.join)(ANTD_TEMPLATES_DIR, "runtime.ts.tpl"))
|
|
180
182
|
});
|
|
181
183
|
api.writeTmpFile({
|
|
182
184
|
path: "types.d.ts",
|
|
@@ -223,13 +225,17 @@ export type IRuntimeConfig = {
|
|
|
223
225
|
return [];
|
|
224
226
|
});
|
|
225
227
|
api.addEntryImportsAhead(() => {
|
|
228
|
+
const isAntd5 = antdVersion.startsWith("5");
|
|
226
229
|
const style = api.config.antd.style || "less";
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
{
|
|
230
|
+
const imports = [];
|
|
231
|
+
if (isAntd5) {
|
|
232
|
+
imports.push({ source: "antd/dist/reset.css" });
|
|
233
|
+
} else if (!api.config.antd.import || api.appData.vite) {
|
|
234
|
+
imports.push({
|
|
230
235
|
source: style === "less" ? "antd/dist/antd.less" : "antd/dist/antd.css"
|
|
231
|
-
}
|
|
232
|
-
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
return imports;
|
|
233
239
|
});
|
|
234
240
|
};
|
|
235
241
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TEMPLATES_DIR: string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
|
+
var __export = (target, all) => {
|
|
6
|
+
for (var name in all)
|
|
7
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
8
|
+
};
|
|
9
|
+
var __copyProps = (to, from, except, desc) => {
|
|
10
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
11
|
+
for (let key of __getOwnPropNames(from))
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
13
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
14
|
+
}
|
|
15
|
+
return to;
|
|
16
|
+
};
|
|
17
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
|
+
|
|
19
|
+
// src/constants.ts
|
|
20
|
+
var constants_exports = {};
|
|
21
|
+
__export(constants_exports, {
|
|
22
|
+
TEMPLATES_DIR: () => TEMPLATES_DIR
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(constants_exports);
|
|
25
|
+
var import_path = require("path");
|
|
26
|
+
var TEMPLATES_DIR = (0, import_path.join)(__dirname, "../templates");
|
|
27
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
28
|
+
0 && (module.exports = {
|
|
29
|
+
TEMPLATES_DIR
|
|
30
|
+
});
|
package/dist/layout.js
CHANGED
|
@@ -52,6 +52,7 @@ var getAllIcons = () => {
|
|
|
52
52
|
{}
|
|
53
53
|
);
|
|
54
54
|
};
|
|
55
|
+
var ANT_PRO_COMPONENT = "@ant-design/pro-components";
|
|
55
56
|
var layout_default = (api) => {
|
|
56
57
|
let antdVersion = "4.0.0";
|
|
57
58
|
try {
|
|
@@ -75,7 +76,7 @@ var layout_default = (api) => {
|
|
|
75
76
|
});
|
|
76
77
|
const depList = [
|
|
77
78
|
"@alipay/tech-ui",
|
|
78
|
-
|
|
79
|
+
ANT_PRO_COMPONENT,
|
|
79
80
|
"@ant-design/pro-layout"
|
|
80
81
|
];
|
|
81
82
|
const pkgHasDep = depList.find((dep) => {
|
|
@@ -94,9 +95,10 @@ var layout_default = (api) => {
|
|
|
94
95
|
if (pkgHasDep && api.cwd !== cwd && (0, import_fs.existsSync)((0, import_path.join)(cwd, "node_modules", pkgHasDep, "package.json"))) {
|
|
95
96
|
return (0, import_path.join)(cwd, "node_modules", pkgHasDep);
|
|
96
97
|
}
|
|
97
|
-
return (0, import_path.dirname)(require.resolve(
|
|
98
|
+
return (0, import_path.dirname)(require.resolve(`${ANT_PRO_COMPONENT}/package.json`));
|
|
98
99
|
};
|
|
99
100
|
const pkgPath = (0, import_plugin_utils.winPath)(getPkgPath());
|
|
101
|
+
const resolvedPkgPath = pkgPath || ANT_PRO_COMPONENT;
|
|
100
102
|
api.modifyAppData((memo) => {
|
|
101
103
|
const version = require(`${pkgPath}/package.json`).version;
|
|
102
104
|
memo.pluginLayout = {
|
|
@@ -112,8 +114,11 @@ var layout_default = (api) => {
|
|
|
112
114
|
}
|
|
113
115
|
return memo;
|
|
114
116
|
});
|
|
117
|
+
const isFlattedDepsDir = [import_plugin_utils.NpmClientEnum.npm, import_plugin_utils.NpmClientEnum.yarn].includes(
|
|
118
|
+
api.appData.npmClient
|
|
119
|
+
);
|
|
115
120
|
api.onGenerateFiles(() => {
|
|
116
|
-
const PKG_TYPE_REFERENCE = `/// <reference types="${
|
|
121
|
+
const PKG_TYPE_REFERENCE = `/// <reference types="${isFlattedDepsDir ? ANT_PRO_COMPONENT : resolvedPkgPath}" />`;
|
|
117
122
|
const hasInitialStatePlugin = api.config.initialState;
|
|
118
123
|
api.writeTmpFile({
|
|
119
124
|
path: "Layout.tsx",
|
|
@@ -124,7 +129,7 @@ import type { IRoute } from 'umi';
|
|
|
124
129
|
import React, { useMemo } from 'react';
|
|
125
130
|
import {
|
|
126
131
|
ProLayout,
|
|
127
|
-
} from "${
|
|
132
|
+
} from "${resolvedPkgPath}";
|
|
128
133
|
import './Layout.less';
|
|
129
134
|
import Logo from './Logo';
|
|
130
135
|
import Exception from './Exception';
|
|
@@ -299,7 +304,7 @@ const { formatMessage } = useIntl();
|
|
|
299
304
|
path: "types.d.ts",
|
|
300
305
|
content: `
|
|
301
306
|
${PKG_TYPE_REFERENCE}
|
|
302
|
-
import type { ProLayoutProps, HeaderProps } from "${
|
|
307
|
+
import type { ProLayoutProps, HeaderProps } from "${resolvedPkgPath}";
|
|
303
308
|
${hasInitialStatePlugin ? `import type InitialStateType from '@@/plugin-initialState/@@initialState';
|
|
304
309
|
type InitDataType = ReturnType<typeof InitialStateType>;
|
|
305
310
|
` : "type InitDataType = any;"}
|
package/dist/locale.js
CHANGED
|
@@ -37,8 +37,10 @@ var import_fs = require("fs");
|
|
|
37
37
|
var import_path = require("path");
|
|
38
38
|
var import_umi = require("umi");
|
|
39
39
|
var import_plugin_utils = require("umi/plugin-utils");
|
|
40
|
+
var import_constants = require("./constants");
|
|
40
41
|
var import_localeUtils = require("./utils/localeUtils");
|
|
41
42
|
var import_withTmpPath = require("./utils/withTmpPath");
|
|
43
|
+
var LOCALE_TEMPLATES_DIR = (0, import_path.join)(import_constants.TEMPLATES_DIR, "locale");
|
|
42
44
|
var packageNormalize = (packageName) => packageName.replace(/[@\/\-.]/g, "_");
|
|
43
45
|
var locale_default = (api) => {
|
|
44
46
|
let hasAntd = false;
|
|
@@ -108,7 +110,7 @@ var locale_default = (api) => {
|
|
|
108
110
|
api.onGenerateFiles(async () => {
|
|
109
111
|
var _a, _b, _c, _d;
|
|
110
112
|
const localeTpl = (0, import_fs.readFileSync)(
|
|
111
|
-
(0, import_path.join)(
|
|
113
|
+
(0, import_path.join)(LOCALE_TEMPLATES_DIR, "locale.tpl"),
|
|
112
114
|
"utf-8"
|
|
113
115
|
);
|
|
114
116
|
const resolveKey = api.config.moment2dayjs ? "dayjs" : "moment";
|
|
@@ -165,7 +167,7 @@ var locale_default = (api) => {
|
|
|
165
167
|
path: "locale.tsx"
|
|
166
168
|
});
|
|
167
169
|
const localeExportsTpl = (0, import_fs.readFileSync)(
|
|
168
|
-
(0, import_path.join)(
|
|
170
|
+
(0, import_path.join)(LOCALE_TEMPLATES_DIR, "localeExports.tpl"),
|
|
169
171
|
"utf-8"
|
|
170
172
|
);
|
|
171
173
|
const localeDirName = "locales";
|
|
@@ -197,7 +199,7 @@ var locale_default = (api) => {
|
|
|
197
199
|
})
|
|
198
200
|
});
|
|
199
201
|
const runtimeTpl = (0, import_fs.readFileSync)(
|
|
200
|
-
(0, import_path.join)(
|
|
202
|
+
(0, import_path.join)(LOCALE_TEMPLATES_DIR, "runtime.tpl"),
|
|
201
203
|
"utf-8"
|
|
202
204
|
);
|
|
203
205
|
api.writeTmpFile({
|
|
@@ -207,7 +209,7 @@ var locale_default = (api) => {
|
|
|
207
209
|
})
|
|
208
210
|
});
|
|
209
211
|
const selectLang = (0, import_fs.readFileSync)(
|
|
210
|
-
(0, import_path.join)(
|
|
212
|
+
(0, import_path.join)(LOCALE_TEMPLATES_DIR, "SelectLang.tpl"),
|
|
211
213
|
"utf-8"
|
|
212
214
|
);
|
|
213
215
|
api.writeTmpFile({
|
package/dist/mf.js
CHANGED
|
@@ -25,10 +25,12 @@ module.exports = __toCommonJS(mf_exports);
|
|
|
25
25
|
var import_fs = require("fs");
|
|
26
26
|
var import_path = require("path");
|
|
27
27
|
var import_plugin_utils = require("umi/plugin-utils");
|
|
28
|
+
var import_constants = require("./constants");
|
|
28
29
|
var import_mfUtils = require("./utils/mfUtils");
|
|
29
30
|
var { isEmpty } = import_plugin_utils.lodash;
|
|
30
31
|
var mfSetupPathFileName = "_mf_setup-public-path.js";
|
|
31
32
|
var mfAsyncEntryFileName = "asyncEntry.ts";
|
|
33
|
+
var MF_TEMPLATES_DIR = (0, import_path.join)(import_constants.TEMPLATES_DIR, "mf");
|
|
32
34
|
function mf(api) {
|
|
33
35
|
api.describe({
|
|
34
36
|
key: "mf",
|
|
@@ -121,7 +123,7 @@ function mf(api) {
|
|
|
121
123
|
context: {
|
|
122
124
|
remoteCodeString: (0, import_mfUtils.toRemotesCodeString)(remotes)
|
|
123
125
|
},
|
|
124
|
-
tplPath: (0, import_path.join)(
|
|
126
|
+
tplPath: (0, import_plugin_utils.winPath)((0, import_path.join)(MF_TEMPLATES_DIR, "runtime.ts.tpl"))
|
|
125
127
|
});
|
|
126
128
|
if (api.env === "development" && api.config.mfsu) {
|
|
127
129
|
return;
|
package/dist/qiankun/slave.js
CHANGED
|
@@ -263,15 +263,24 @@ export { MicroAppLink } from './MicroAppLink';
|
|
|
263
263
|
key: "onLocalProxyStart",
|
|
264
264
|
type: api.ApplyPluginsType.event
|
|
265
265
|
});
|
|
266
|
+
const modifyLocalProxyOpts = await api.applyPlugins({
|
|
267
|
+
key: "modifyLocalProxyOpts",
|
|
268
|
+
type: api.ApplyPluginsType.modify,
|
|
269
|
+
initialValue: {}
|
|
270
|
+
}) ?? {};
|
|
271
|
+
const localProxyOpts = {
|
|
272
|
+
target: masterEntry,
|
|
273
|
+
secure: false,
|
|
274
|
+
ignorePath: false,
|
|
275
|
+
followRedirects: false,
|
|
276
|
+
changeOrigin: true,
|
|
277
|
+
selfHandleResponse: true,
|
|
278
|
+
...modifyLocalProxyOpts
|
|
279
|
+
};
|
|
266
280
|
return (0, import_http_proxy_middleware.createProxyMiddleware)(
|
|
267
281
|
(pathname) => pathname !== "/local-dev-server",
|
|
268
282
|
{
|
|
269
|
-
|
|
270
|
-
secure: false,
|
|
271
|
-
ignorePath: false,
|
|
272
|
-
followRedirects: false,
|
|
273
|
-
changeOrigin: true,
|
|
274
|
-
selfHandleResponse: true,
|
|
283
|
+
...localProxyOpts,
|
|
275
284
|
onProxyReq(proxyReq) {
|
|
276
285
|
api.applyPlugins({
|
|
277
286
|
key: "onLocalProxyReq",
|
|
@@ -284,13 +293,18 @@ export { MicroAppLink } from './MicroAppLink';
|
|
|
284
293
|
async (responseBuffer, proxyRes, req2, res2) => {
|
|
285
294
|
var _a2;
|
|
286
295
|
if (proxyRes.statusCode === 302) {
|
|
287
|
-
const
|
|
296
|
+
const { ignorePath = false } = localProxyOpts;
|
|
297
|
+
const { hostname, url, protocol } = req2;
|
|
288
298
|
const port = process.env.PORT || ((_a2 = api.appData) == null ? void 0 : _a2.port);
|
|
289
|
-
const
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
299
|
+
const gotoBasePart = `${protocol}://${hostname}:${port}${ignorePath && url ? url : "/"}`;
|
|
300
|
+
const fromBasePart = masterEntry;
|
|
301
|
+
const locationUrl = proxyRes.headers.location || "";
|
|
302
|
+
const [originAndPath, searchParams] = locationUrl.split("?");
|
|
303
|
+
const searchHandled = searchParams ? `?${searchParams.replace(
|
|
304
|
+
encodeURIComponent(fromBasePart),
|
|
305
|
+
encodeURIComponent(gotoBasePart)
|
|
306
|
+
)}` : "";
|
|
307
|
+
const redirectUrl = `${originAndPath}${searchHandled}`;
|
|
294
308
|
const redirectMessage = `[@umijs/plugin-qiankun]: redirect to ${redirectUrl}`;
|
|
295
309
|
api.logger.info(redirectMessage);
|
|
296
310
|
res2.statusCode = 302;
|
|
@@ -8,7 +8,7 @@ import noop from 'lodash/noop';
|
|
|
8
8
|
import {
|
|
9
9
|
FrameworkConfiguration,
|
|
10
10
|
loadMicroApp,
|
|
11
|
-
MicroApp as
|
|
11
|
+
MicroApp as MicroAppTypeDefinition,
|
|
12
12
|
prefetchApps,
|
|
13
13
|
} from 'qiankun';
|
|
14
14
|
import React, {
|
|
@@ -37,6 +37,12 @@ type MemoryHistory = {
|
|
|
37
37
|
type?: 'memory';
|
|
38
38
|
} & any;
|
|
39
39
|
|
|
40
|
+
type MicroAppType = MicroAppTypeDefinition & {
|
|
41
|
+
_unmounting?: boolean;
|
|
42
|
+
_updatingPromise?: Promise<void>;
|
|
43
|
+
_updatingTimestamp?: number;
|
|
44
|
+
};
|
|
45
|
+
|
|
40
46
|
export type Props = {
|
|
41
47
|
name: string;
|
|
42
48
|
settings?: FrameworkConfiguration;
|
|
@@ -59,10 +65,8 @@ export type Props = {
|
|
|
59
65
|
className?: string;
|
|
60
66
|
} & Record<string, any>;
|
|
61
67
|
|
|
62
|
-
function unmountMicroApp(microApp
|
|
63
|
-
|
|
64
|
-
microApp.mountPromise.then(() => microApp.unmount());
|
|
65
|
-
}
|
|
68
|
+
function unmountMicroApp(microApp: MicroAppType) {
|
|
69
|
+
microApp.mountPromise.then(() => microApp.unmount());
|
|
66
70
|
}
|
|
67
71
|
|
|
68
72
|
function useDeepCompare<T>(value: T): T {
|
|
@@ -98,7 +102,6 @@ export const MicroApp = forwardRef(
|
|
|
98
102
|
...propsFromParams
|
|
99
103
|
} = componentProps;
|
|
100
104
|
|
|
101
|
-
// ref: https://github.com/umijs/plugins/pull/866
|
|
102
105
|
// name 跟 appNameKeyAlias 这两个 key 同时存在时,优先使用 name,避免对存量应用造成 breaking change。
|
|
103
106
|
// 比如 appNameKeyAlias 配置是 id,但之前 id 正好作为普通的 props 使用过,如 <MicroApp name="app" id="123" />
|
|
104
107
|
// 正常场景会优先匹配 appNameKeyAlias 对应的字段,fallback 到 name,避免对已经使用 <MicroApp name="app" /> 的应用造成影响
|
|
@@ -133,8 +136,6 @@ export const MicroApp = forwardRef(
|
|
|
133
136
|
|
|
134
137
|
const containerRef = useRef<HTMLDivElement>();
|
|
135
138
|
const microAppRef = useRef<MicroAppType>();
|
|
136
|
-
const updatingPromise = useRef<Promise<any>>();
|
|
137
|
-
const updatingTimestamp = useRef(Date.now());
|
|
138
139
|
|
|
139
140
|
useImperativeHandle(componentRef, () => microAppRef.current);
|
|
140
141
|
|
|
@@ -143,8 +144,8 @@ export const MicroApp = forwardRef(
|
|
|
143
144
|
if (!appConfig) {
|
|
144
145
|
setComponentError(
|
|
145
146
|
new Error(
|
|
146
|
-
`[@umijs/plugin-qiankun]: Can not find the configuration of ${name} app
|
|
147
|
-
)
|
|
147
|
+
`[@umijs/plugin-qiankun]: Can not find the configuration of ${name} app! Currently, only the following apps are configured:\n${JSON.stringify(apps, null, 2)}`
|
|
148
|
+
)
|
|
148
149
|
);
|
|
149
150
|
}
|
|
150
151
|
return noop;
|
|
@@ -223,36 +224,39 @@ export const MicroApp = forwardRef(
|
|
|
223
224
|
},
|
|
224
225
|
);
|
|
225
226
|
|
|
226
|
-
return () =>
|
|
227
|
+
return () => {
|
|
228
|
+
const microApp = microAppRef.current;
|
|
229
|
+
if (microApp) {
|
|
230
|
+
// 微应用 unmount 是异步的,中间的流转状态不能确定,所有需要一个标志位来确保 unmount 开始之后不会再触发 update
|
|
231
|
+
microApp._unmounting = true;
|
|
232
|
+
unmountMicroApp(microApp);
|
|
233
|
+
}
|
|
234
|
+
};
|
|
227
235
|
}, [name]);
|
|
228
236
|
|
|
229
237
|
useEffect(() => {
|
|
230
238
|
const microApp = microAppRef.current;
|
|
231
239
|
if (microApp) {
|
|
232
|
-
if (!
|
|
240
|
+
if (!microApp._updatingPromise) {
|
|
233
241
|
// 初始化 updatingPromise 为 microApp.mountPromise,从而确保后续更新是在应用 mount 完成之后
|
|
234
|
-
|
|
242
|
+
microApp._updatingPromise = microApp.mountPromise;
|
|
243
|
+
microApp._updatingTimestamp = Date.now();
|
|
235
244
|
} else {
|
|
236
245
|
// 确保 microApp.update 调用是跟组件状态变更顺序一致的,且后一个微应用更新必须等待前一个更新完成
|
|
237
|
-
|
|
246
|
+
microApp._updatingPromise = microApp._updatingPromise.then(() => {
|
|
238
247
|
const canUpdate = (microApp?: MicroAppType) =>
|
|
239
|
-
microApp?.update && microApp.getStatus() === 'MOUNTED';
|
|
248
|
+
microApp?.update && microApp.getStatus() === 'MOUNTED' && !microApp._unmounting;
|
|
240
249
|
if (canUpdate(microApp)) {
|
|
241
250
|
const props = {
|
|
242
251
|
...propsFromConfig,
|
|
243
252
|
...stateForSlave,
|
|
244
253
|
...propsFromParams,
|
|
245
|
-
__globalRoutesInfo: {
|
|
246
|
-
appNameKeyAlias,
|
|
247
|
-
masterHistoryType,
|
|
248
|
-
base: globalSettings.base,
|
|
249
|
-
microAppRoutes: globalSettings.microAppRoutes,
|
|
250
|
-
},
|
|
251
254
|
setLoading,
|
|
252
255
|
};
|
|
253
256
|
|
|
254
257
|
if (process.env.NODE_ENV === 'development') {
|
|
255
|
-
|
|
258
|
+
const updatingTimestamp = microApp._updatingTimestamp!;
|
|
259
|
+
if (Date.now() - updatingTimestamp < 200) {
|
|
256
260
|
console.warn(
|
|
257
261
|
`[@umijs/plugin-qiankun] It seems like microApp ${name} is updating too many times in a short time(200ms), you may need to do some optimization to avoid the unnecessary re-rendering.`,
|
|
258
262
|
);
|
|
@@ -262,7 +266,7 @@ export const MicroApp = forwardRef(
|
|
|
262
266
|
`[@umijs/plugin-qiankun] MicroApp ${name} is updating with props: `,
|
|
263
267
|
props,
|
|
264
268
|
);
|
|
265
|
-
|
|
269
|
+
microApp._updatingTimestamp = Date.now();
|
|
266
270
|
}
|
|
267
271
|
|
|
268
272
|
// 返回 microApp.update 形成链式调用
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umijs/plugins",
|
|
3
|
-
"version": "4.0.0-canary.
|
|
3
|
+
"version": "4.0.0-canary.20230424.1",
|
|
4
4
|
"description": "@umijs/plugins",
|
|
5
5
|
"homepage": "https://github.com/umijs/umi/tree/master/packages/plugins#readme",
|
|
6
6
|
"bugs": "https://github.com/umijs/umi/issues",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"files": [
|
|
15
15
|
"dist",
|
|
16
16
|
"libs",
|
|
17
|
-
"
|
|
17
|
+
"templates"
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@ahooksjs/use-request": "^2.0.0",
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"styled-components": "6.0.0-beta.9",
|
|
43
43
|
"tslib": "^2",
|
|
44
44
|
"warning": "^4.0.3",
|
|
45
|
-
"@umijs/bundler-utils": "4.0.0-canary.
|
|
45
|
+
"@umijs/bundler-utils": "4.0.0-canary.20230424.1",
|
|
46
46
|
"@umijs/valtio": "1.0.3"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
49
|
"antd": "^4.24.1",
|
|
50
|
-
"umi": "4.0.0-canary.
|
|
50
|
+
"umi": "4.0.0-canary.20230424.1"
|
|
51
51
|
},
|
|
52
52
|
"publishConfig": {
|
|
53
53
|
"access": "public"
|
|
@@ -13,30 +13,32 @@ import {
|
|
|
13
13
|
import { ApplyPluginsType } from 'umi';
|
|
14
14
|
import { getPluginManager } from '../core/plugin';
|
|
15
15
|
|
|
16
|
+
let cacheAntdConfig = null;
|
|
17
|
+
|
|
18
|
+
const getAntdConfig = () => {
|
|
19
|
+
if(!cacheAntdConfig){
|
|
20
|
+
cacheAntdConfig = getPluginManager().applyPlugins({
|
|
21
|
+
key: 'antd',
|
|
22
|
+
type: ApplyPluginsType.modify,
|
|
23
|
+
initialValue: {
|
|
24
|
+
{{#configProvider}}
|
|
25
|
+
...{{{configProvider}}},
|
|
26
|
+
{{/configProvider}}
|
|
27
|
+
{{#appConfig}}
|
|
28
|
+
appConfig: {{{appConfig}}},
|
|
29
|
+
{{/appConfig}}
|
|
30
|
+
},
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
return cacheAntdConfig;
|
|
34
|
+
}
|
|
35
|
+
|
|
16
36
|
export function rootContainer(rawContainer) {
|
|
17
37
|
const {
|
|
18
|
-
appConfig
|
|
38
|
+
appConfig,
|
|
19
39
|
...finalConfigProvider
|
|
20
|
-
} =
|
|
21
|
-
key: 'antd',
|
|
22
|
-
type: ApplyPluginsType.modify,
|
|
23
|
-
initialValue: {
|
|
24
|
-
{{#configProvider}}
|
|
25
|
-
...{{{configProvider}}},
|
|
26
|
-
{{/configProvider}}
|
|
27
|
-
{{#appConfig}}
|
|
28
|
-
appConfig: {{{appConfig}}},
|
|
29
|
-
{{/appConfig}}
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
|
|
40
|
+
} = getAntdConfig();
|
|
33
41
|
let container = rawContainer;
|
|
34
|
-
|
|
35
|
-
{{#appConfig}}
|
|
36
|
-
// The App component should be under ConfigProvider
|
|
37
|
-
container = <App {...finalAppConfig}>{container}</App>;
|
|
38
|
-
{{/appConfig}}
|
|
39
|
-
|
|
40
42
|
{{#configProvider}}
|
|
41
43
|
if (finalConfigProvider.prefixCls) {
|
|
42
44
|
Modal.config({
|
|
@@ -61,3 +63,14 @@ export function rootContainer(rawContainer) {
|
|
|
61
63
|
|
|
62
64
|
return container;
|
|
63
65
|
}
|
|
66
|
+
|
|
67
|
+
{{#appConfig}}
|
|
68
|
+
// The App component should be under ConfigProvider
|
|
69
|
+
// plugin-locale has other ConfigProvider
|
|
70
|
+
export function innerProvider(container: any) {
|
|
71
|
+
const {
|
|
72
|
+
appConfig: finalAppConfig = {},
|
|
73
|
+
} = getAntdConfig();
|
|
74
|
+
return <App {...finalAppConfig}>{container}</App>;
|
|
75
|
+
}
|
|
76
|
+
{{/appConfig}}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|