@umijs/preset-umi 4.0.63 → 4.0.65
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/features/esbuildHelperChecker/esbuildHelperChecker.d.ts +6 -0
- package/dist/features/esbuildHelperChecker/esbuildHelperChecker.js +123 -0
- package/dist/features/mpa/mpa.js +8 -6
- package/dist/features/prepare/prepare.js +14 -5
- package/dist/features/ui/ui.js +109 -3
- package/dist/index.js +1 -0
- package/package.json +15 -14
- package/templates/defineApp.tpl +2 -2
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/features/esbuildHelperChecker/esbuildHelperChecker.ts
|
|
30
|
+
var esbuildHelperChecker_exports = {};
|
|
31
|
+
__export(esbuildHelperChecker_exports, {
|
|
32
|
+
default: () => esbuildHelperChecker_default,
|
|
33
|
+
getGlobalVars: () => getGlobalVars
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(esbuildHelperChecker_exports);
|
|
36
|
+
var parser = __toESM(require("@umijs/bundler-utils/compiled/babel/parser"));
|
|
37
|
+
var t = __toESM(require("@umijs/bundler-utils/compiled/babel/types"));
|
|
38
|
+
var import_utils = require("@umijs/utils");
|
|
39
|
+
var import_assert = __toESM(require("assert"));
|
|
40
|
+
var import_fs = __toESM(require("fs"));
|
|
41
|
+
var import_path = __toESM(require("path"));
|
|
42
|
+
async function checkDir(opts) {
|
|
43
|
+
import_utils.logger.info(
|
|
44
|
+
`[esbuildHelperChecker] Checking esbuild helpers from your dist files...`
|
|
45
|
+
);
|
|
46
|
+
const jsFiles = import_fs.default.readdirSync(opts.dir).filter((file) => file.endsWith(".js"));
|
|
47
|
+
const varMap = {};
|
|
48
|
+
for (const jsFile of jsFiles) {
|
|
49
|
+
const vars = await getGlobalVars({
|
|
50
|
+
content: import_fs.default.readFileSync(import_path.default.join(opts.dir, jsFile), "utf-8")
|
|
51
|
+
});
|
|
52
|
+
for (const v of vars) {
|
|
53
|
+
varMap[v] = varMap[v] || [];
|
|
54
|
+
varMap[v].push(jsFile);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const conflicts = Object.keys(varMap).filter((v) => varMap[v].length > 1).map((v) => `${v} (${varMap[v].join(", ")})`);
|
|
58
|
+
if (conflicts.length) {
|
|
59
|
+
throw new Error(
|
|
60
|
+
`Found conflicts in esbuild helpers: ${conflicts.join(
|
|
61
|
+
", "
|
|
62
|
+
)}, please set esbuildMinifyIIFE: true in your config file.`
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
import_utils.logger.info(`[esbuildHelperChecker] No conflicts found.`);
|
|
66
|
+
}
|
|
67
|
+
async function getGlobalVars(opts) {
|
|
68
|
+
const ast = parser.parse(opts.content, {
|
|
69
|
+
sourceType: "module",
|
|
70
|
+
sourceFilename: "foo.js",
|
|
71
|
+
plugins: []
|
|
72
|
+
});
|
|
73
|
+
const vars = [];
|
|
74
|
+
ast.program.body.forEach((node) => {
|
|
75
|
+
if (t.isVariableDeclaration(node)) {
|
|
76
|
+
node.declarations.forEach((declaration) => {
|
|
77
|
+
if (t.isVariableDeclarator(declaration)) {
|
|
78
|
+
if (t.isIdentifier(declaration.id)) {
|
|
79
|
+
vars.push(declaration.id.name);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return vars;
|
|
86
|
+
}
|
|
87
|
+
var esbuildHelperChecker_default = (api) => {
|
|
88
|
+
api.registerCommand({
|
|
89
|
+
name: "esbuildHelperChecker",
|
|
90
|
+
description: "check esbuild helper conflicts",
|
|
91
|
+
configResolveMode: "loose",
|
|
92
|
+
async fn({ args }) {
|
|
93
|
+
const targetDir = args._[0];
|
|
94
|
+
(0, import_assert.default)(targetDir, "target directory is required");
|
|
95
|
+
await checkDir({
|
|
96
|
+
dir: import_path.default.resolve(process.cwd(), targetDir)
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
api.onBuildComplete(async ({ err }) => {
|
|
101
|
+
if (err)
|
|
102
|
+
return;
|
|
103
|
+
const jsMinifier = api.config.jsMinifier || "esbuild";
|
|
104
|
+
if (jsMinifier !== "esbuild")
|
|
105
|
+
return;
|
|
106
|
+
if (api.config.esbuildMinifyIIFE)
|
|
107
|
+
return;
|
|
108
|
+
if (process.env.COMPRESS === "none")
|
|
109
|
+
return;
|
|
110
|
+
try {
|
|
111
|
+
await checkDir({
|
|
112
|
+
dir: api.paths.absOutputPath
|
|
113
|
+
});
|
|
114
|
+
} catch (e) {
|
|
115
|
+
import_utils.logger.fatal(import_utils.chalk.red(`[esbuildHelperChecker] ${e.message}`));
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
121
|
+
0 && (module.exports = {
|
|
122
|
+
getGlobalVars
|
|
123
|
+
});
|
package/dist/features/mpa/mpa.js
CHANGED
|
@@ -58,7 +58,8 @@ var mpa_default = (api) => {
|
|
|
58
58
|
memo.mpa = {
|
|
59
59
|
entry: await collectEntryWithTimeCount(
|
|
60
60
|
api.paths.absPagesPath,
|
|
61
|
-
api.config.mpa
|
|
61
|
+
api.config.mpa,
|
|
62
|
+
api.userConfig.mountElementId
|
|
62
63
|
)
|
|
63
64
|
};
|
|
64
65
|
return memo;
|
|
@@ -67,7 +68,8 @@ var mpa_default = (api) => {
|
|
|
67
68
|
if (!isFirstTime) {
|
|
68
69
|
api.appData.mpa.entry = await collectEntryWithTimeCount(
|
|
69
70
|
api.paths.absPagesPath,
|
|
70
|
-
api.config.mpa
|
|
71
|
+
api.config.mpa,
|
|
72
|
+
api.userConfig.mountElementId
|
|
71
73
|
);
|
|
72
74
|
}
|
|
73
75
|
const isReact18 = api.appData.react.version.startsWith("18.");
|
|
@@ -128,9 +130,9 @@ ${renderer}
|
|
|
128
130
|
return memo;
|
|
129
131
|
});
|
|
130
132
|
};
|
|
131
|
-
async function collectEntryWithTimeCount(root, opts) {
|
|
133
|
+
async function collectEntryWithTimeCount(root, opts, mountElementId) {
|
|
132
134
|
const d = new Date();
|
|
133
|
-
const entries = await collectEntry(root, opts);
|
|
135
|
+
const entries = await collectEntry(root, opts, mountElementId);
|
|
134
136
|
import_utils.logger.info(
|
|
135
137
|
`[MPA] Collect Entries in ${new Date().getTime() - d.getTime()}ms`
|
|
136
138
|
);
|
|
@@ -143,7 +145,7 @@ function filterEntry(dir) {
|
|
|
143
145
|
const entries = process.env.MPA_FILTER.split(",");
|
|
144
146
|
return entries.includes(dir);
|
|
145
147
|
}
|
|
146
|
-
async function collectEntry(root, opts) {
|
|
148
|
+
async function collectEntry(root, opts, mountElementId) {
|
|
147
149
|
return await (0, import_fs.readdirSync)(root).reduce(
|
|
148
150
|
async (memoP, dir) => {
|
|
149
151
|
var _a;
|
|
@@ -162,7 +164,7 @@ async function collectEntry(root, opts) {
|
|
|
162
164
|
name,
|
|
163
165
|
file: indexFile,
|
|
164
166
|
tmpFilePath: `mpa/${dir}${(0, import_path.extname)(indexFile)}`,
|
|
165
|
-
mountElementId: "root",
|
|
167
|
+
mountElementId: mountElementId || "root",
|
|
166
168
|
...globalConfig,
|
|
167
169
|
...config,
|
|
168
170
|
title: (globalConfig == null ? void 0 : globalConfig.title) || config.title || dir
|
|
@@ -52,7 +52,9 @@ var prepare_default = (api) => {
|
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
54
|
async function parseProjectImportSpecifiers(br) {
|
|
55
|
-
const files = Object.keys(br.metafile.inputs) || []
|
|
55
|
+
const files = (Object.keys(br.metafile.inputs) || []).filter(
|
|
56
|
+
import_utils.isJavaScriptFile
|
|
57
|
+
);
|
|
56
58
|
if (files.length === 0) {
|
|
57
59
|
return {};
|
|
58
60
|
}
|
|
@@ -77,13 +79,15 @@ var prepare_default = (api) => {
|
|
|
77
79
|
api.register({
|
|
78
80
|
key: "onGenerateFiles",
|
|
79
81
|
async fn({ isFirstTime }) {
|
|
82
|
+
var _a, _b;
|
|
80
83
|
if (api.appData.framework === "vue") {
|
|
81
84
|
return;
|
|
82
85
|
}
|
|
83
86
|
if (!isFirstTime)
|
|
84
87
|
return;
|
|
85
88
|
import_utils.logger.info("Preparing...");
|
|
86
|
-
const
|
|
89
|
+
const umiEntry = import_path.default.join(api.paths.absTmpPath, "umi.ts");
|
|
90
|
+
const entryPoints = [umiEntry];
|
|
87
91
|
const { build } = await import("./build.js");
|
|
88
92
|
const watch = api.name === "dev";
|
|
89
93
|
const plugins = await api.applyPlugins({
|
|
@@ -93,8 +97,13 @@ var prepare_default = (api) => {
|
|
|
93
97
|
const unwrappedAlias = import_utils.aliasUtils.parseCircleAlias({
|
|
94
98
|
alias: api.config.alias
|
|
95
99
|
});
|
|
100
|
+
if (api.userConfig.mpa) {
|
|
101
|
+
(_b = (_a = api.appData.mpa) == null ? void 0 : _a.entry) == null ? void 0 : _b.forEach(({ tmpFilePath }) => {
|
|
102
|
+
entryPoints.push(import_path.default.join(api.paths.absTmpPath, tmpFilePath));
|
|
103
|
+
});
|
|
104
|
+
}
|
|
96
105
|
const buildResult = await build({
|
|
97
|
-
entryPoints
|
|
106
|
+
entryPoints,
|
|
98
107
|
watch: watch && {
|
|
99
108
|
async onRebuildSuccess({ result }) {
|
|
100
109
|
const fileImports2 = await parseProjectImportSpecifiers(result);
|
|
@@ -117,8 +126,8 @@ var prepare_default = (api) => {
|
|
|
117
126
|
});
|
|
118
127
|
if (watch) {
|
|
119
128
|
(0, import_watch.addUnWatch)(() => {
|
|
120
|
-
var
|
|
121
|
-
(
|
|
129
|
+
var _a2;
|
|
130
|
+
(_a2 = buildResult.stop) == null ? void 0 : _a2.call(buildResult);
|
|
122
131
|
});
|
|
123
132
|
}
|
|
124
133
|
const fileImports = await parseProjectImportSpecifiers(buildResult);
|
package/dist/features/ui/ui.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
1
2
|
var __defProp = Object.defineProperty;
|
|
2
3
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
4
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
5
7
|
var __export = (target, all) => {
|
|
6
8
|
for (var name in all)
|
|
@@ -14,6 +16,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
14
16
|
}
|
|
15
17
|
return to;
|
|
16
18
|
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
17
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
18
28
|
|
|
19
29
|
// src/features/ui/ui.ts
|
|
@@ -22,18 +32,114 @@ __export(ui_exports, {
|
|
|
22
32
|
default: () => ui_default
|
|
23
33
|
});
|
|
24
34
|
module.exports = __toCommonJS(ui_exports);
|
|
35
|
+
var import_utils = require("@umijs/utils");
|
|
36
|
+
var import_fs = __toESM(require("fs"));
|
|
37
|
+
var import_path = __toESM(require("path"));
|
|
38
|
+
var import_sirv = __toESM(require("../../../compiled/sirv"));
|
|
25
39
|
var ENTRY_PATH = "/__umi_ui/entry";
|
|
26
40
|
var ui_default = (api) => {
|
|
27
41
|
api.describe({
|
|
28
42
|
enableBy() {
|
|
29
|
-
return api.name === "dev" && api.
|
|
43
|
+
return api.name === "dev" && api.userConfig.ui;
|
|
44
|
+
},
|
|
45
|
+
config: {
|
|
46
|
+
schema({ zod }) {
|
|
47
|
+
return zod.object({});
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const uiDir = import_path.default.dirname(require.resolve("@umijs/ui/package.json"));
|
|
52
|
+
api.onCheck(() => {
|
|
53
|
+
if (!import_fs.default.existsSync(import_path.default.join(uiDir, "dist"))) {
|
|
54
|
+
if ((0, import_utils.isLocalDev)()) {
|
|
55
|
+
throw new Error(
|
|
56
|
+
`@umijs/ui not built, please run 'pnpm ui:build' first.`
|
|
57
|
+
);
|
|
58
|
+
} else {
|
|
59
|
+
throw new Error(`@umijs/ui not found, please fill an issue on github.`);
|
|
60
|
+
}
|
|
30
61
|
}
|
|
31
62
|
});
|
|
32
63
|
api.onBeforeMiddleware(({ app }) => {
|
|
33
|
-
app.use(
|
|
34
|
-
|
|
64
|
+
app.use(
|
|
65
|
+
ENTRY_PATH,
|
|
66
|
+
(0, import_sirv.default)(import_path.default.join(uiDir, "dist"), {
|
|
67
|
+
etag: true,
|
|
68
|
+
dev: true,
|
|
69
|
+
single: true
|
|
70
|
+
})
|
|
71
|
+
);
|
|
72
|
+
});
|
|
73
|
+
api.addHTMLStyles(() => {
|
|
74
|
+
return [
|
|
75
|
+
`
|
|
76
|
+
#umi-ui-container.umi-ui-container-show {
|
|
77
|
+
display: block;
|
|
78
|
+
}
|
|
79
|
+
#umi-ui-container {
|
|
80
|
+
position: fixed;
|
|
81
|
+
bottom: 10px;
|
|
82
|
+
left: calc(10vw + 10px);
|
|
83
|
+
height: calc(75vh - 20px);
|
|
84
|
+
width: calc(80vw - 20px);
|
|
85
|
+
display: none;
|
|
86
|
+
border-radius: .5rem;
|
|
87
|
+
z-index: 2147483646;
|
|
88
|
+
}
|
|
89
|
+
#umi-ui-toggle-btn {
|
|
90
|
+
width: 40px;
|
|
91
|
+
height: 40px;
|
|
92
|
+
position: fixed;
|
|
93
|
+
left: 50%;
|
|
94
|
+
bottom: -20px;
|
|
95
|
+
transform: translateX(-50%);
|
|
96
|
+
cursor: pointer;
|
|
97
|
+
display: flex;
|
|
98
|
+
background-size: 100% 100%;
|
|
99
|
+
background-image: url('data:image/png;base64,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');
|
|
100
|
+
transition: bottom 0.1s linear;
|
|
101
|
+
z-index: 2147483647;
|
|
102
|
+
}
|
|
103
|
+
#umi-ui-toggle-btn:hover {
|
|
104
|
+
bottom: 0px;
|
|
105
|
+
}
|
|
106
|
+
#umi-ui-iframe {
|
|
107
|
+
width: 100%;
|
|
108
|
+
height: 100%;
|
|
109
|
+
outline: none;
|
|
110
|
+
border: 1px solid rgba(125,125,125,0.2);
|
|
111
|
+
border-radius: 0.5rem;
|
|
112
|
+
}
|
|
113
|
+
`
|
|
114
|
+
];
|
|
115
|
+
});
|
|
116
|
+
api.onGenerateFiles(({ isFirstTime }) => {
|
|
117
|
+
if (!isFirstTime)
|
|
118
|
+
return;
|
|
119
|
+
api.writeTmpFile({
|
|
120
|
+
path: "core/ui.ts",
|
|
121
|
+
noPluginDir: true,
|
|
122
|
+
content: `
|
|
123
|
+
// button and iframe
|
|
124
|
+
const container = document.createElement('div')
|
|
125
|
+
container.id = 'umi-ui-container';
|
|
126
|
+
const iframe = document.createElement('iframe');
|
|
127
|
+
iframe.id = 'umi-ui-iframe';
|
|
128
|
+
iframe.src = '${process.env.DEBUG_UMI_UI_PATH || ENTRY_PATH}';
|
|
129
|
+
const uiBtn = document.createElement('div');
|
|
130
|
+
uiBtn.id = 'umi-ui-toggle-btn';
|
|
131
|
+
container.appendChild(iframe);
|
|
132
|
+
document.body.appendChild(uiBtn);
|
|
133
|
+
document.body.appendChild(container);
|
|
134
|
+
uiBtn.addEventListener('click', () => {
|
|
135
|
+
container.classList.toggle('umi-ui-container-show');
|
|
136
|
+
});
|
|
137
|
+
`
|
|
35
138
|
});
|
|
36
139
|
});
|
|
140
|
+
api.addEntryImports(() => {
|
|
141
|
+
return [{ source: "@@/core/ui" }];
|
|
142
|
+
});
|
|
37
143
|
};
|
|
38
144
|
// Annotate the CommonJS export names for ESM import in node:
|
|
39
145
|
0 && (module.exports = {});
|
package/dist/index.js
CHANGED
|
@@ -48,6 +48,7 @@ var src_default = () => {
|
|
|
48
48
|
require.resolve("./features/crossorigin/crossorigin"),
|
|
49
49
|
require.resolve("./features/depsOnDemand/depsOnDemand"),
|
|
50
50
|
require.resolve("./features/devTool/devTool"),
|
|
51
|
+
require.resolve("./features/esbuildHelperChecker/esbuildHelperChecker"),
|
|
51
52
|
require.resolve("./features/esmi/esmi"),
|
|
52
53
|
require.resolve("./features/exportStatic/exportStatic"),
|
|
53
54
|
require.resolve("./features/favicons/favicons"),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umijs/preset-umi",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.65",
|
|
4
4
|
"description": "@umijs/preset-umi",
|
|
5
5
|
"homepage": "https://github.com/umijs/umi/tree/master/packages/preset-umi#readme",
|
|
6
6
|
"bugs": "https://github.com/umijs/umi/issues",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@iconify/utils": "2.1.1",
|
|
23
23
|
"@svgr/core": "6.5.1",
|
|
24
|
-
"@umijs/es-module-parser": "0.0.
|
|
24
|
+
"@umijs/es-module-parser": "0.0.7",
|
|
25
25
|
"@umijs/history": "5.3.1",
|
|
26
26
|
"babel-plugin-dynamic-import-node": "2.3.3",
|
|
27
27
|
"click-to-react-component": "^1.0.8",
|
|
@@ -37,19 +37,20 @@
|
|
|
37
37
|
"react-router": "6.3.0",
|
|
38
38
|
"react-router-dom": "6.3.0",
|
|
39
39
|
"regenerator-runtime": "0.13.11",
|
|
40
|
-
"@umijs/ast": "4.0.
|
|
41
|
-
"@umijs/babel-preset-umi": "4.0.
|
|
42
|
-
"@umijs/bundler-
|
|
43
|
-
"@umijs/
|
|
44
|
-
"@umijs/bundler-webpack": "4.0.63",
|
|
45
|
-
"@umijs/core": "4.0.63",
|
|
40
|
+
"@umijs/ast": "4.0.65",
|
|
41
|
+
"@umijs/babel-preset-umi": "4.0.65",
|
|
42
|
+
"@umijs/bundler-vite": "4.0.65",
|
|
43
|
+
"@umijs/core": "4.0.65",
|
|
46
44
|
"@umijs/did-you-know": "1.0.3",
|
|
47
|
-
"@umijs/mfsu": "4.0.
|
|
48
|
-
"@umijs/
|
|
49
|
-
"@umijs/
|
|
50
|
-
"@umijs/
|
|
51
|
-
"@umijs/
|
|
52
|
-
"@umijs/
|
|
45
|
+
"@umijs/mfsu": "4.0.65",
|
|
46
|
+
"@umijs/renderer-react": "4.0.65",
|
|
47
|
+
"@umijs/bundler-utils": "4.0.65",
|
|
48
|
+
"@umijs/bundler-webpack": "4.0.65",
|
|
49
|
+
"@umijs/ui": "3.0.0-alpha.0",
|
|
50
|
+
"@umijs/utils": "4.0.65",
|
|
51
|
+
"@umijs/zod2ts": "4.0.65",
|
|
52
|
+
"@umijs/plugin-run": "4.0.65",
|
|
53
|
+
"@umijs/server": "4.0.65"
|
|
53
54
|
},
|
|
54
55
|
"devDependencies": {
|
|
55
56
|
"@manypkg/get-packages": "1.1.3",
|
package/templates/defineApp.tpl
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{{{ beforeImport }}}
|
|
2
2
|
interface IDefaultRuntimeConfig {
|
|
3
|
-
onRouteChange?: (props: { routes: any, clientRoutes: any, location: any, action:any }) => void;
|
|
3
|
+
onRouteChange?: (props: { routes: any, clientRoutes: any, location: any, action: any, isFirst: boolean }) => void;
|
|
4
4
|
patchRoutes?: (props: { routes: any }) => void;
|
|
5
5
|
patchClientRoutes?: (props: { routes: any }) => void;
|
|
6
6
|
render?: (oldRender: () => void) => void;
|
|
@@ -11,4 +11,4 @@ interface IDefaultRuntimeConfig {
|
|
|
11
11
|
|
|
12
12
|
export function defineApp(config: RuntimeConfig): RuntimeConfig {
|
|
13
13
|
return config;
|
|
14
|
-
}
|
|
14
|
+
}
|