@lemon-fe/vite-plugin-micro-frontend 1.0.1 → 1.0.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.
- package/dist/index.d.ts +43 -3
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +19 -2
- package/dist/runtime.js +107 -38
- package/dist/runtime.js.map +1 -1
- package/package.json +7 -3
package/dist/runtime.d.ts
CHANGED
|
@@ -38,7 +38,7 @@ interface DynamicOptions<P = Record<string, unknown>> {
|
|
|
38
38
|
*
|
|
39
39
|
* @example
|
|
40
40
|
* ```tsx
|
|
41
|
-
* import { dynamic } from '@lemon-fe/vite-plugin-micro-frontend/
|
|
41
|
+
* import { dynamic } from '@lemon-fe/vite-plugin-micro-frontend/runtime';
|
|
42
42
|
*
|
|
43
43
|
* // 使用 dynamic
|
|
44
44
|
* const MyComponent = dynamic({
|
|
@@ -48,6 +48,23 @@ interface DynamicOptions<P = Record<string, unknown>> {
|
|
|
48
48
|
* ```
|
|
49
49
|
*/
|
|
50
50
|
declare function dynamic<P = Record<string, unknown>>(options: DynamicOptions<P>): ComponentType<P>;
|
|
51
|
+
/**
|
|
52
|
+
* 预加载并缓存 manifest.json
|
|
53
|
+
* 建议在应用启动时调用,这样当 chunk 加载失败时可以通过缓存的旧 manifest 找到源文件路径
|
|
54
|
+
*
|
|
55
|
+
* @param baseUrl 应用的 base URL,如 'https://dev.lemengcloud.com/app-wms' 或 '/app-wms'
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```tsx
|
|
59
|
+
* import { preloadManifest } from '@lemon-fe/vite-plugin-micro-frontend/dynamic';
|
|
60
|
+
*
|
|
61
|
+
* // 在应用入口处调用
|
|
62
|
+
* preloadManifest('/app-wms');
|
|
63
|
+
* // 或者使用完整 URL
|
|
64
|
+
* preloadManifest('https://dev.lemengcloud.com/app-wms');
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
declare function preloadManifest(baseUrl: string): Promise<void>;
|
|
51
68
|
|
|
52
|
-
export { dynamic, qiankunWindow, renderWithQiankun };
|
|
69
|
+
export { dynamic, preloadManifest, qiankunWindow, renderWithQiankun };
|
|
53
70
|
export type { DynamicOptions, QiankunLifeCycle, QiankunProps, QiankunWindow };
|
package/dist/runtime.js
CHANGED
|
@@ -9,6 +9,8 @@ import { lazy, createElement, Suspense } from 'react';
|
|
|
9
9
|
const qiankunWindow = qiankunWindow$1;
|
|
10
10
|
const renderWithQiankun = renderWithQiankun$1;
|
|
11
11
|
|
|
12
|
+
/** 缓存的 manifest(按 baseUrl 存储) */
|
|
13
|
+
const manifestCache = new Map();
|
|
12
14
|
/**
|
|
13
15
|
* 从失败的 chunk URL 中提取应用的 base URL
|
|
14
16
|
* 例如: 'https://dev.lemengcloud.com/app-wms/assets/index-cWmftfi0.js' -> 'https://dev.lemengcloud.com/app-wms'
|
|
@@ -25,50 +27,70 @@ function extractBaseUrl(chunkUrl) {
|
|
|
25
27
|
return `${url.origin}${pathParts.join("/")}`;
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
28
|
-
*
|
|
30
|
+
* 获取 manifest.json
|
|
29
31
|
* @param baseUrl 应用的 base URL,如 'https://dev.lemengcloud.com/app-wms'
|
|
32
|
+
* @param forceRefresh 是否强制刷新(不使用缓存)
|
|
30
33
|
*/
|
|
31
|
-
async function fetchManifest(baseUrl) {
|
|
34
|
+
async function fetchManifest(baseUrl, forceRefresh = false) {
|
|
35
|
+
// 如果不强制刷新且有缓存,直接返回缓存
|
|
36
|
+
if (!forceRefresh && manifestCache.has(baseUrl)) {
|
|
37
|
+
return manifestCache.get(baseUrl);
|
|
38
|
+
}
|
|
32
39
|
const manifestUrl = `${baseUrl}/.vite/manifest.json?t=${Date.now()}`;
|
|
33
40
|
const res = await fetch(manifestUrl);
|
|
34
41
|
if (!res.ok) {
|
|
35
42
|
throw new Error(`获取 manifest 失败: ${res.status} - ${manifestUrl}`);
|
|
36
43
|
}
|
|
37
|
-
|
|
44
|
+
const manifest = (await res.json());
|
|
45
|
+
if (!forceRefresh) {
|
|
46
|
+
manifestCache.set(baseUrl, manifest);
|
|
47
|
+
}
|
|
48
|
+
return manifest;
|
|
38
49
|
}
|
|
39
50
|
/**
|
|
40
|
-
* 从失败的 URL
|
|
41
|
-
* 例如: 'index-cWmftfi0.js' -> 'index'
|
|
51
|
+
* 从失败的 URL 中提取文件名(含路径但不含 baseUrl)
|
|
52
|
+
* 例如: 'https://xxx/app-wms/assets/index-cWmftfi0.js' -> 'assets/index-cWmftfi0.js'
|
|
53
|
+
* 'https://xxx/app-wms/index-cWmftfi0.js' -> 'index-cWmftfi0.js'
|
|
42
54
|
*/
|
|
43
|
-
function
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
55
|
+
function extractFilePath(chunkUrl, baseUrl) {
|
|
56
|
+
try {
|
|
57
|
+
const url = new URL(chunkUrl);
|
|
58
|
+
const baseUrlObj = new URL(baseUrl);
|
|
59
|
+
// 获取相对于 baseUrl 的路径
|
|
60
|
+
const relativePath = url.pathname.slice(baseUrlObj.pathname.length);
|
|
61
|
+
// 移除开头的斜杠
|
|
62
|
+
return relativePath.replace(/^\//, "");
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
47
65
|
return null;
|
|
48
|
-
|
|
49
|
-
// 移除 hash 和扩展名: 'index-cWmftfi0.js' -> 'index'
|
|
50
|
-
const baseMatch = fileName.match(/^(.+?)-[a-zA-Z0-9]+\.(js|css)$/);
|
|
51
|
-
return baseMatch ? baseMatch[1] : null;
|
|
66
|
+
}
|
|
52
67
|
}
|
|
53
68
|
/**
|
|
54
|
-
* 从 manifest
|
|
69
|
+
* 从 manifest 中通过 file 反向查找 key(源文件路径)
|
|
55
70
|
* @param manifest manifest 对象
|
|
56
|
-
* @param
|
|
57
|
-
* @param baseUrl 应用的 base URL
|
|
71
|
+
* @param filePath 文件路径(如 'assets/index-cWmftfi0.js' 或 'index-cWmftfi0.js')
|
|
58
72
|
*/
|
|
59
|
-
function
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (entry.
|
|
63
|
-
|
|
73
|
+
function findManifestKeyByFile(manifest, filePath) {
|
|
74
|
+
for (const [key, entry] of Object.entries(manifest)) {
|
|
75
|
+
// 直接匹配 file 字段(可能包含 assets/ 前缀也可能不包含)
|
|
76
|
+
if (entry.file === filePath ||
|
|
77
|
+
`assets/${entry.file}` === filePath ||
|
|
78
|
+
entry.file === `assets/${filePath}`) {
|
|
79
|
+
return key;
|
|
64
80
|
}
|
|
65
81
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 从新 manifest 中通过 key 查找新的 chunk URL
|
|
86
|
+
* @param manifest 新的 manifest 对象
|
|
87
|
+
* @param key manifest 的 key(源文件路径)
|
|
88
|
+
* @param baseUrl 应用的 base URL
|
|
89
|
+
*/
|
|
90
|
+
function findNewChunkUrlByKey(manifest, key, baseUrl) {
|
|
91
|
+
const entry = manifest[key];
|
|
92
|
+
if (entry) {
|
|
93
|
+
return `${baseUrl}/${entry.file}`;
|
|
72
94
|
}
|
|
73
95
|
return null;
|
|
74
96
|
}
|
|
@@ -105,19 +127,36 @@ function wrapLoaderWithManifestRetry(loader) {
|
|
|
105
127
|
if (!failedUrl) {
|
|
106
128
|
throw error;
|
|
107
129
|
}
|
|
108
|
-
const baseName = extractBaseName(failedUrl);
|
|
109
|
-
if (!baseName) {
|
|
110
|
-
throw error;
|
|
111
|
-
}
|
|
112
130
|
// 从失败的 URL 中提取应用的 base URL
|
|
113
131
|
const baseUrl = extractBaseUrl(failedUrl);
|
|
114
|
-
//
|
|
115
|
-
const
|
|
116
|
-
|
|
132
|
+
// 提取失败文件的相对路径
|
|
133
|
+
const filePath = extractFilePath(failedUrl, baseUrl);
|
|
134
|
+
if (!filePath) {
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
// 先获取缓存的旧 manifest(如果有),通过 file 反向找到 key
|
|
138
|
+
const cachedManifest = manifestCache.get(baseUrl);
|
|
139
|
+
let manifestKey = null;
|
|
140
|
+
if (cachedManifest) {
|
|
141
|
+
manifestKey = findManifestKeyByFile(cachedManifest, filePath);
|
|
142
|
+
}
|
|
143
|
+
// 获取最新的 manifest(强制刷新)
|
|
144
|
+
const newManifest = await fetchManifest(baseUrl, true);
|
|
145
|
+
if (!manifestKey) {
|
|
146
|
+
// 无法从缓存的 manifest 中找到源文件路径,提示用户刷新
|
|
147
|
+
console.warn("[dynamic] 无法映射 chunk,提示用户刷新页面:", filePath);
|
|
148
|
+
alert("系统已更新,请刷新页面以获取最新版本。");
|
|
149
|
+
window.location.reload();
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
// 用 key 在新 manifest 中找到新的 file
|
|
153
|
+
const newUrl = findNewChunkUrlByKey(newManifest, manifestKey, baseUrl);
|
|
117
154
|
if (!newUrl) {
|
|
118
|
-
|
|
155
|
+
console.warn('[dynamic] 无法在新 manifest 中找到 "${manifestKey}" 对应的 chunk');
|
|
156
|
+
alert("系统已更新,请刷新页面以获取最新版本。");
|
|
157
|
+
window.location.reload();
|
|
158
|
+
return;
|
|
119
159
|
}
|
|
120
|
-
console.log("newUrl", newUrl);
|
|
121
160
|
// 动态导入新的 chunk
|
|
122
161
|
return import(/* @vite-ignore */ newUrl);
|
|
123
162
|
}
|
|
@@ -132,7 +171,7 @@ function wrapLoaderWithManifestRetry(loader) {
|
|
|
132
171
|
*
|
|
133
172
|
* @example
|
|
134
173
|
* ```tsx
|
|
135
|
-
* import { dynamic } from '@lemon-fe/vite-plugin-micro-frontend/
|
|
174
|
+
* import { dynamic } from '@lemon-fe/vite-plugin-micro-frontend/runtime';
|
|
136
175
|
*
|
|
137
176
|
* // 使用 dynamic
|
|
138
177
|
* const MyComponent = dynamic({
|
|
@@ -148,6 +187,36 @@ function dynamic(options) {
|
|
|
148
187
|
return createElement(Suspense, { fallback: LoadingFallback ? createElement(LoadingFallback) : null }, createElement(LazyComponent, props));
|
|
149
188
|
};
|
|
150
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* 预加载并缓存 manifest.json
|
|
192
|
+
* 建议在应用启动时调用,这样当 chunk 加载失败时可以通过缓存的旧 manifest 找到源文件路径
|
|
193
|
+
*
|
|
194
|
+
* @param baseUrl 应用的 base URL,如 'https://dev.lemengcloud.com/app-wms' 或 '/app-wms'
|
|
195
|
+
*
|
|
196
|
+
* @example
|
|
197
|
+
* ```tsx
|
|
198
|
+
* import { preloadManifest } from '@lemon-fe/vite-plugin-micro-frontend/dynamic';
|
|
199
|
+
*
|
|
200
|
+
* // 在应用入口处调用
|
|
201
|
+
* preloadManifest('/app-wms');
|
|
202
|
+
* // 或者使用完整 URL
|
|
203
|
+
* preloadManifest('https://dev.lemengcloud.com/app-wms');
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
async function preloadManifest(baseUrl) {
|
|
207
|
+
try {
|
|
208
|
+
// 如果是相对路径,转换为完整 URL
|
|
209
|
+
const fullBaseUrl = baseUrl.startsWith("http")
|
|
210
|
+
? baseUrl
|
|
211
|
+
: `${window.location.origin}${baseUrl}`;
|
|
212
|
+
await fetchManifest(fullBaseUrl);
|
|
213
|
+
console.log("[dynamic] manifest 预加载成功:", fullBaseUrl);
|
|
214
|
+
}
|
|
215
|
+
catch (error) {
|
|
216
|
+
// 预加载失败不影响应用运行,只是在 chunk 失败时可能无法正确映射
|
|
217
|
+
console.warn("[dynamic] manifest 预加载失败:", error);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
151
220
|
|
|
152
|
-
export { dynamic, qiankunWindow, renderWithQiankun };
|
|
221
|
+
export { dynamic, preloadManifest, qiankunWindow, renderWithQiankun };
|
|
153
222
|
//# sourceMappingURL=runtime.js.map
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sources":["../src/runtime/qiankun.ts","../src/runtime/dynamic.ts"],"sourcesContent":[null,null],"names":["_qiankunWindow","_renderWithQiankun"],"mappings":";;;AAAA;;;AAGG;AAoBH;AAMO,MAAM,aAAa,GAAkBA;AACrC,MAAM,iBAAiB,GAC5BC;;ACVF;;;AAGG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAA;AACtC,IAAA,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;;IAE7B,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;;AAEzC,IAAA,SAAS,CAAC,GAAG,EAAE,CAAC;IAChB,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,QAAQ,EAAE;AAChD,QAAA,SAAS,CAAC,GAAG,EAAE,CAAC;IAClB;AACA,IAAA,OAAO,CAAA,EAAG,GAAG,CAAC,MAAM,CAAA,EAAG,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAE;AAC9C;AAEA
|
|
1
|
+
{"version":3,"file":"runtime.js","sources":["../src/runtime/qiankun.ts","../src/runtime/dynamic.ts"],"sourcesContent":[null,null],"names":["_qiankunWindow","_renderWithQiankun"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lemon-fe/vite-plugin-micro-frontend",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.4",
|
|
4
4
|
"description": "Vite 微前端插件集合,包含路由自动生成、模块联邦、qiankun 集成等功能",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"node": ">=18.0.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
49
|
-
"
|
|
50
|
-
"
|
|
49
|
+
"react": "^17.0.0",
|
|
50
|
+
"vite": "^4.0.0 || ^5.0.0"
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@originjs/vite-plugin-federation": "^1.4.1",
|
|
@@ -56,11 +56,15 @@
|
|
|
56
56
|
"vite-plugin-qiankun": "^1.0.15"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
+
"@babel/parser": "^7.28.5",
|
|
60
|
+
"@babel/traverse": "^7.28.5",
|
|
61
|
+
"@babel/types": "^7.28.5",
|
|
59
62
|
"@rollup/plugin-commonjs": "^28.0.0",
|
|
60
63
|
"@rollup/plugin-json": "^6.1.0",
|
|
61
64
|
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
62
65
|
"@rollup/plugin-terser": "^0.4.4",
|
|
63
66
|
"@rollup/plugin-typescript": "^12.1.0",
|
|
67
|
+
"@types/babel__traverse": "^7.28.0",
|
|
64
68
|
"@types/node": "^22.0.0",
|
|
65
69
|
"@types/react": "^18.0.0",
|
|
66
70
|
"rollup": "^4.21.2",
|