@lark-apaas/fullstack-vite-preset 1.0.9-alpha.5 → 1.0.9-alpha.50
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/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/preset.d.ts.map +1 -1
- package/lib/preset.js +177 -6
- package/lib/preset.js.map +1 -1
- package/lib/vite-plugins/preconnect-plugin.d.ts +31 -0
- package/lib/vite-plugins/preconnect-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/preconnect-plugin.js +73 -0
- package/lib/vite-plugins/preconnect-plugin.js.map +1 -0
- package/lib/vite-plugins/route-parser-plugin.d.ts +1 -0
- package/lib/vite-plugins/route-parser-plugin.d.ts.map +1 -1
- package/lib/vite-plugins/route-parser-plugin.js +12 -218
- package/lib/vite-plugins/route-parser-plugin.js.map +1 -1
- package/lib/vite-plugins/slardar-plugin.d.ts.map +1 -1
- package/lib/vite-plugins/slardar-plugin.js +6 -2
- package/lib/vite-plugins/slardar-plugin.js.map +1 -1
- package/package.json +4 -4
- package/src/overlay/index.js +19 -1
- package/src/overlay/vite-client.js +37 -2
package/lib/index.d.ts
CHANGED
|
@@ -36,4 +36,6 @@ export type { CreateRecommendViteConfigOptions } from './preset';
|
|
|
36
36
|
export { createRecommendViteConfig } from './preset';
|
|
37
37
|
export { runtimeInjectionPlugin } from './vite-plugins/runtime-injection-plugin';
|
|
38
38
|
export type { RuntimeInjectionPluginOptions } from './vite-plugins/runtime-injection-plugin';
|
|
39
|
+
export { preconnectPlugin } from './vite-plugins/preconnect-plugin';
|
|
40
|
+
export type { PreconnectPluginOptions } from './vite-plugins/preconnect-plugin';
|
|
39
41
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAMpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,GAAE,UAAe,GACzB,UAAU,CAiCZ;AAGD,OAAO,EAAE,yBAAyB,IAAI,YAAY,EAAE,CAAC;AAGrD,YAAY,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,YAAY,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,MAAM,CAAC;AAMpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,GAAE,UAAe,GACzB,UAAU,CAiCZ;AAGD,OAAO,EAAE,yBAAyB,IAAI,YAAY,EAAE,CAAC;AAGrD,YAAY,EAAE,gCAAgC,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,YAAY,EAAE,6BAA6B,EAAE,MAAM,yCAAyC,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,YAAY,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.runtimeInjectionPlugin = exports.createRecommendViteConfig = void 0;
|
|
3
|
+
exports.preconnectPlugin = exports.runtimeInjectionPlugin = exports.createRecommendViteConfig = void 0;
|
|
4
4
|
exports.createFullstackViteConfig = createFullstackViteConfig;
|
|
5
5
|
exports.defineConfig = createFullstackViteConfig;
|
|
6
6
|
const vite_1 = require("vite");
|
|
@@ -72,4 +72,6 @@ Object.defineProperty(exports, "createRecommendViteConfig", { enumerable: true,
|
|
|
72
72
|
// Re-export plugins for independent use
|
|
73
73
|
var runtime_injection_plugin_1 = require("./vite-plugins/runtime-injection-plugin");
|
|
74
74
|
Object.defineProperty(exports, "runtimeInjectionPlugin", { enumerable: true, get: function () { return runtime_injection_plugin_1.runtimeInjectionPlugin; } });
|
|
75
|
+
var preconnect_plugin_1 = require("./vite-plugins/preconnect-plugin");
|
|
76
|
+
Object.defineProperty(exports, "preconnectPlugin", { enumerable: true, get: function () { return preconnect_plugin_1.preconnectPlugin; } });
|
|
75
77
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAqCA,8DAmCC;AAGqC,iDAAY;AA3ElD,+BAAoD;AACpD,2DAA6D;AAE7D,qCAAqD;AACrD,qEAAoF;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,yBAAyB,CACvC,YAAwB,EAAE;IAE1B,yFAAyF;IACzF,IAAI,CAAC;QACH,8DAA8D;QAC9D,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,2EAA2E;IAC7E,CAAC;IAED,mDAAmD;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,eAAe;IAEvE,+BAA+B;IAC/B,MAAM,cAAc,GAAG,IAAA,gCAAiB,EAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAA,2DAAqC,EACtD,KAAK;QACH,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG;QACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CACvC,CAAC;IAEF,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAA,kCAAyB,EAAC;QAC3C,KAAK;QACL,kBAAkB;QAClB,UAAU;QACV,cAAc;QACd,UAAU;KACX,CAAC,CAAC;IAEH,mCAAmC;IACnC,OAAO,IAAA,kBAAW,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAOD,mCAAqD;AAA5C,mHAAA,yBAAyB,OAAA;AAElC,wCAAwC;AACxC,oFAAiF;AAAxE,kIAAA,sBAAsB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAqCA,8DAmCC;AAGqC,iDAAY;AA3ElD,+BAAoD;AACpD,2DAA6D;AAE7D,qCAAqD;AACrD,qEAAoF;AAEpF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,SAAgB,yBAAyB,CACvC,YAAwB,EAAE;IAE1B,yFAAyF;IACzF,IAAI,CAAC;QACH,8DAA8D;QAC9D,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,2EAA2E;IAC7E,CAAC;IAED,mDAAmD;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;IACpD,MAAM,kBAAkB,GAAG,KAAK,CAAC;IACjC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC,CAAC,eAAe;IAEvE,+BAA+B;IAC/B,MAAM,cAAc,GAAG,IAAA,gCAAiB,EAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG,CAAC,CAAC;IAC9E,MAAM,UAAU,GAAG,IAAA,2DAAqC,EACtD,KAAK;QACH,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,GAAG;QACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,GAAG,CACvC,CAAC;IAEF,yDAAyD;IACzD,MAAM,UAAU,GAAG,IAAA,kCAAyB,EAAC;QAC3C,KAAK;QACL,kBAAkB;QAClB,UAAU;QACV,cAAc;QACd,UAAU;KACX,CAAC,CAAC;IAEH,mCAAmC;IACnC,OAAO,IAAA,kBAAW,EAAC,UAAU,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAOD,mCAAqD;AAA5C,mHAAA,yBAAyB,OAAA;AAElC,wCAAwC;AACxC,oFAAiF;AAAxE,kIAAA,sBAAsB,OAAA;AAE/B,sEAAoE;AAA3D,qHAAA,gBAAgB,OAAA"}
|
package/lib/preset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;AAgD9D,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,mCAAmC;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2CAA2C;IAC3C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAsHD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,UAAU,CA6cZ"}
|
package/lib/preset.js
CHANGED
|
@@ -12,6 +12,7 @@ const vite_inspector_plugin_1 = require("@lark-apaas/vite-inspector-plugin");
|
|
|
12
12
|
const devtool_kits_1 = require("@lark-apaas/devtool-kits");
|
|
13
13
|
const vite_client_patch_plugin_1 = require("./vite-plugins/vite-client-patch-plugin");
|
|
14
14
|
const route_parser_plugin_1 = require("./vite-plugins/route-parser-plugin");
|
|
15
|
+
const preconnect_plugin_1 = require("./vite-plugins/preconnect-plugin");
|
|
15
16
|
const slardar_plugin_1 = require("./vite-plugins/slardar-plugin");
|
|
16
17
|
const view_context_plugin_1 = require("./vite-plugins/view-context-plugin");
|
|
17
18
|
const og_meta_plugin_1 = require("./vite-plugins/og-meta-plugin");
|
|
@@ -40,6 +41,100 @@ function sendBackendUnavailable502(_err, _req, res) {
|
|
|
40
41
|
}
|
|
41
42
|
// 检查是否启用宽松 build 模式
|
|
42
43
|
const isLooseMode = process.env.FORCE_FRAMEWORK_BUILD_LOOSE_MODE === 'true';
|
|
44
|
+
/**
|
|
45
|
+
* 默认的 vendor 分包策略,供 rollup `output.manualChunks` 使用。
|
|
46
|
+
*
|
|
47
|
+
* 目标:把稳定、重量级的第三方依赖从业务 chunk 中拆出,让浏览器并行下载 +
|
|
48
|
+
* 让 vendor chunk 在业务代码变更时保持 hash 稳定、持续命中缓存。
|
|
49
|
+
*
|
|
50
|
+
* 分组原则:
|
|
51
|
+
* - 体量大且独立演进的库各成一组(antd / radix / echarts / tiptap / shiki 等)
|
|
52
|
+
* - 相关小库合并(utils 聚合 dayjs / lodash / axios 等)
|
|
53
|
+
* - 其他 node_modules 进兜底 `vendor-misc`,避免碎片化
|
|
54
|
+
* - 非 node_modules 代码保持默认(业务 chunk + Vite 自己按动态 import 切分)
|
|
55
|
+
*/
|
|
56
|
+
function getDefaultManualChunks() {
|
|
57
|
+
return (id) => {
|
|
58
|
+
if (!id.includes('node_modules'))
|
|
59
|
+
return undefined;
|
|
60
|
+
// 解析出 package 名(兼容 @scope/name 和 name)
|
|
61
|
+
const match = id.match(/node_modules\/(@[^/]+\/[^/]+|[^/@][^/]*)/);
|
|
62
|
+
const pkg = match?.[1];
|
|
63
|
+
if (!pkg)
|
|
64
|
+
return undefined;
|
|
65
|
+
// React 核心运行时(最稳定,长期缓存)
|
|
66
|
+
if (pkg === 'react' || pkg === 'react-dom' || pkg === 'scheduler') {
|
|
67
|
+
return 'vendor-react';
|
|
68
|
+
}
|
|
69
|
+
// React 路由相关(迭代略快,但仍相对稳定)
|
|
70
|
+
if (pkg === 'react-router-dom' || pkg === 'react-router' || pkg === '@remix-run/router') {
|
|
71
|
+
return 'vendor-router';
|
|
72
|
+
}
|
|
73
|
+
// Observability / stacktrace 解析一族(体积大、几乎只在错误上报链路用到)
|
|
74
|
+
// 单独拆出便于未来 toolkit 改为 lazy 时直接作为独立 chunk 延迟加载
|
|
75
|
+
if (pkg.startsWith('@opentelemetry/') ||
|
|
76
|
+
pkg === 'source-map' ||
|
|
77
|
+
pkg === 'stacktrace-gps' ||
|
|
78
|
+
pkg === 'stacktrace-js' ||
|
|
79
|
+
pkg === 'stack-generator' ||
|
|
80
|
+
pkg === 'error-stack-parser' ||
|
|
81
|
+
pkg === 'zone.js') {
|
|
82
|
+
return 'vendor-observability';
|
|
83
|
+
}
|
|
84
|
+
// antd 全家(antd + @ant-design + rc-* 系列)
|
|
85
|
+
if (pkg === 'antd' ||
|
|
86
|
+
pkg.startsWith('@ant-design/') ||
|
|
87
|
+
pkg.startsWith('rc-') ||
|
|
88
|
+
pkg.startsWith('@rc-component/')) {
|
|
89
|
+
return 'vendor-antd';
|
|
90
|
+
}
|
|
91
|
+
// 妙搭自家 SDK
|
|
92
|
+
if (pkg.startsWith('@lark-apaas/'))
|
|
93
|
+
return 'vendor-toolkit';
|
|
94
|
+
// Radix UI
|
|
95
|
+
if (pkg === 'radix-ui' || pkg.startsWith('@radix-ui/'))
|
|
96
|
+
return 'vendor-radix';
|
|
97
|
+
// 数据层
|
|
98
|
+
if (pkg.startsWith('@tanstack/'))
|
|
99
|
+
return 'vendor-tanstack';
|
|
100
|
+
if (pkg.startsWith('@reduxjs/') || pkg === 'react-redux' || pkg === 'redux') {
|
|
101
|
+
return 'vendor-redux';
|
|
102
|
+
}
|
|
103
|
+
// 图表
|
|
104
|
+
if (pkg === 'echarts' || pkg === 'echarts-for-react' || pkg === 'zrender') {
|
|
105
|
+
return 'vendor-echarts';
|
|
106
|
+
}
|
|
107
|
+
if (pkg === 'recharts' || pkg.startsWith('victory-') || pkg === 'd3') {
|
|
108
|
+
return 'vendor-recharts';
|
|
109
|
+
}
|
|
110
|
+
// 富文本编辑器
|
|
111
|
+
if (pkg.startsWith('@tiptap/') || pkg.startsWith('prosemirror-') || pkg === 'lowlight') {
|
|
112
|
+
return 'vendor-tiptap';
|
|
113
|
+
}
|
|
114
|
+
// 代码高亮
|
|
115
|
+
if (pkg === 'shiki' || pkg.startsWith('@shikijs/'))
|
|
116
|
+
return 'vendor-shiki';
|
|
117
|
+
// 动画
|
|
118
|
+
if (pkg === 'framer-motion' || pkg === 'motion' || pkg === 'gsap' || pkg === 'cobe') {
|
|
119
|
+
return 'vendor-motion';
|
|
120
|
+
}
|
|
121
|
+
// 文件处理(大且通常按需)
|
|
122
|
+
if (pkg === 'xlsx' ||
|
|
123
|
+
pkg === 'xlsx-js-style' ||
|
|
124
|
+
pkg === 'jspdf' ||
|
|
125
|
+
pkg === 'html2canvas' ||
|
|
126
|
+
pkg === 'qrcode.react') {
|
|
127
|
+
return 'vendor-files';
|
|
128
|
+
}
|
|
129
|
+
// icons
|
|
130
|
+
if (pkg === 'lucide-react' || pkg.startsWith('@heroicons/'))
|
|
131
|
+
return 'vendor-icons';
|
|
132
|
+
// 其他所有 node_modules 进兜底组。
|
|
133
|
+
// 不再细分出 vendor-utils,因为小工具库常被多个上层组反向依赖,
|
|
134
|
+
// 再次细分容易构造 A→B→A 的循环 chunk 警告。
|
|
135
|
+
return 'vendor-misc';
|
|
136
|
+
};
|
|
137
|
+
}
|
|
43
138
|
function readAppFlags(rootDir) {
|
|
44
139
|
try {
|
|
45
140
|
return JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(rootDir, 'package.json'), 'utf-8')).flags || {};
|
|
@@ -57,6 +152,38 @@ function createRecommendViteConfig(options) {
|
|
|
57
152
|
const appFlags = readAppFlags(rootDir);
|
|
58
153
|
// 优先从环境变量获取 RELEASE_ID,否则使用时间戳作为兜底
|
|
59
154
|
const releaseId = process.env.RELEASE_ID || new Date().toISOString();
|
|
155
|
+
// 从 clientBasePath(如 /app/app123)中提取 appId,用于构造旧路径代理规则
|
|
156
|
+
// 仅在新路径格式(/app/:appId)下启用旧路径兼容
|
|
157
|
+
const isNewPathFormat = /^\/app\/[^/]/.test(clientBasePath);
|
|
158
|
+
const appId = isNewPathFormat
|
|
159
|
+
? clientBasePath.replace(/\/+$/, '').split('/').pop()
|
|
160
|
+
: '';
|
|
161
|
+
// 当 publicPath 是绝对 URL(即静态资源走跨域 CDN,典型的 miaoda 线上部署场景)时,
|
|
162
|
+
// 从中派生出 CDN origin 用于 preconnect,让浏览器提前建连,减少关键资源等待时间。
|
|
163
|
+
// Dev 模式下 publicPath 是同域路径(如 /app/xxx),不需要 preconnect。
|
|
164
|
+
const assetOriginsForPreconnect = [];
|
|
165
|
+
if (!isDev && typeof publicPath === 'string' && /^https?:\/\//.test(publicPath)) {
|
|
166
|
+
assetOriginsForPreconnect.push(publicPath);
|
|
167
|
+
}
|
|
168
|
+
// 读取构建前生成的路由定义 JSON,供 define 注入到 bundle
|
|
169
|
+
// build.sh 在 client 构建之前已将 page-routes.json / api-routes.json 写入 dist/
|
|
170
|
+
// 独立于 needRoutes(needRoutes 仅控制 RouteParserPlugin),只要文件存在就注入
|
|
171
|
+
let pageRouteDefinitions = [];
|
|
172
|
+
let apiRouteDefinitions = [];
|
|
173
|
+
try {
|
|
174
|
+
const pageRoutesPath = path_1.default.resolve(rootDir, 'dist/page-routes.json');
|
|
175
|
+
if (fs_1.default.existsSync(pageRoutesPath)) {
|
|
176
|
+
pageRouteDefinitions = JSON.parse(fs_1.default.readFileSync(pageRoutesPath, 'utf-8'));
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
catch { /* ignore */ }
|
|
180
|
+
try {
|
|
181
|
+
const apiRoutesPath = path_1.default.resolve(rootDir, 'dist/api-routes.json');
|
|
182
|
+
if (fs_1.default.existsSync(apiRoutesPath)) {
|
|
183
|
+
apiRouteDefinitions = JSON.parse(fs_1.default.readFileSync(apiRoutesPath, 'utf-8'));
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch { /* ignore */ }
|
|
60
187
|
// Build the plugins array
|
|
61
188
|
const plugins = [
|
|
62
189
|
// Cloud env patch: suppress auto page-reload on HMR WebSocket reconnect (dev only)
|
|
@@ -78,6 +205,12 @@ function createRecommendViteConfig(options) {
|
|
|
78
205
|
// Runtime injection plugin - injects @lark-apaas/client-toolkit/runtime
|
|
79
206
|
// Must be early to ensure runtime is loaded before app code
|
|
80
207
|
(0, runtime_injection_plugin_1.runtimeInjectionPlugin)({ clientBasePath }),
|
|
208
|
+
// Inspector plugin for dev mode (injects data attributes for debugging)
|
|
209
|
+
// Only enabled in development when DISABLE_INSPECTOR is not set
|
|
210
|
+
// Must be BEFORE react() — both use enforce:'pre' and Vite runs them in array order.
|
|
211
|
+
// If react() runs first, its Babel transform converts JSX to _jsxDEV() calls,
|
|
212
|
+
// leaving no JSX elements for the inspector to annotate.
|
|
213
|
+
enableInspector && (0, vite_inspector_plugin_1.inspectorPlugin)(),
|
|
81
214
|
// React plugin with Babel for styled-jsx support
|
|
82
215
|
// 宽松模式下使用 @lark-apaas/styled-jsx/babel(对齐 rspack-preset),否则使用社区版
|
|
83
216
|
(0, plugin_react_1.default)({
|
|
@@ -88,9 +221,6 @@ function createRecommendViteConfig(options) {
|
|
|
88
221
|
// Only enable fast refresh in dev mode
|
|
89
222
|
...(enableReactRefresh ? {} : { fastRefresh: false }),
|
|
90
223
|
}),
|
|
91
|
-
// Inspector plugin for dev mode (injects data attributes for debugging)
|
|
92
|
-
// Only enabled in development when DISABLE_INSPECTOR is not set
|
|
93
|
-
enableInspector && (0, vite_inspector_plugin_1.inspectorPlugin)(),
|
|
94
224
|
// Module alias plugin for clsx and echarts
|
|
95
225
|
(0, module_alias_plugin_1.moduleAliasPlugin)(),
|
|
96
226
|
// Route parser plugin (when needRoutes is true)
|
|
@@ -103,10 +233,14 @@ function createRecommendViteConfig(options) {
|
|
|
103
233
|
serveBasePath: clientBasePath,
|
|
104
234
|
...(isDev ? { basePath: '' } : {}),
|
|
105
235
|
}),
|
|
236
|
+
// View context injection plugin (must be before slardar so it appears first in HTML)
|
|
237
|
+
(0, view_context_plugin_1.viewContextPlugin)(),
|
|
238
|
+
// Preconnect to static asset CDN — only when publicPath is an absolute URL
|
|
239
|
+
// (prod deploy with CDN). Dev mode resources are same-origin, no preconnect needed.
|
|
240
|
+
assetOriginsForPreconnect.length > 0 &&
|
|
241
|
+
(0, preconnect_plugin_1.preconnectPlugin)({ origins: assetOriginsForPreconnect }),
|
|
106
242
|
// Performance monitoring plugin (Slardar + Tea)
|
|
107
243
|
(0, slardar_plugin_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
|
|
108
|
-
// View context injection plugin
|
|
109
|
-
(0, view_context_plugin_1.viewContextPlugin)(),
|
|
110
244
|
// OG Meta tags injection plugin
|
|
111
245
|
(0, og_meta_plugin_1.ogMetaPlugin)(),
|
|
112
246
|
// 生产环境:生成 legacy CSS 并注入检测脚本(对齐 rspack-preset)
|
|
@@ -171,6 +305,9 @@ function createRecommendViteConfig(options) {
|
|
|
171
305
|
'process.env.BUILD_TOOL': JSON.stringify('vite'),
|
|
172
306
|
// 模板 flags 配置
|
|
173
307
|
'process.env.APP_FLAGS': JSON.stringify(appFlags),
|
|
308
|
+
// 路由定义,供客户端匹配 referer_path 和 api
|
|
309
|
+
'process.env.__PAGE_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(pageRouteDefinitions)),
|
|
310
|
+
'process.env.__API_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(apiRouteDefinitions)),
|
|
174
311
|
},
|
|
175
312
|
server: {
|
|
176
313
|
port: Number(process.env.CLIENT_DEV_PORT) || 8080,
|
|
@@ -226,6 +363,29 @@ function createRecommendViteConfig(options) {
|
|
|
226
363
|
});
|
|
227
364
|
},
|
|
228
365
|
},
|
|
366
|
+
// 旧路径(/af/p/:appId)兼容代理,转发到 Node Server 由 legacy-path-redirect 中间件处理
|
|
367
|
+
...(appId
|
|
368
|
+
? {
|
|
369
|
+
[`/af/p/${appId}/api`]: {
|
|
370
|
+
target: `http://localhost:${serverPort}`,
|
|
371
|
+
changeOrigin: true,
|
|
372
|
+
configure: (proxy) => {
|
|
373
|
+
proxy.on('error', (err, req, res) => {
|
|
374
|
+
sendBackendUnavailable502(err, req, res);
|
|
375
|
+
});
|
|
376
|
+
},
|
|
377
|
+
},
|
|
378
|
+
[`/af/p/${appId}/__innerapi__`]: {
|
|
379
|
+
target: `http://localhost:${serverPort}`,
|
|
380
|
+
changeOrigin: true,
|
|
381
|
+
configure: (proxy) => {
|
|
382
|
+
proxy.on('error', (err, req, res) => {
|
|
383
|
+
sendBackendUnavailable502(err, req, res);
|
|
384
|
+
});
|
|
385
|
+
},
|
|
386
|
+
},
|
|
387
|
+
}
|
|
388
|
+
: {}),
|
|
229
389
|
},
|
|
230
390
|
},
|
|
231
391
|
build: {
|
|
@@ -233,12 +393,22 @@ function createRecommendViteConfig(options) {
|
|
|
233
393
|
emptyOutDir: false,
|
|
234
394
|
sourcemap: isDev ? true : 'hidden', // Align with rspack-preset's devtool config
|
|
235
395
|
minify: !isDev ? 'esbuild' : false,
|
|
396
|
+
// 提高默认 warn limit — 拆 vendor 后单 chunk 仍可能略大,但不是问题
|
|
397
|
+
chunkSizeWarningLimit: 800,
|
|
236
398
|
rollupOptions: {
|
|
237
399
|
input: path_1.default.resolve(rootDir, 'client/index.html'),
|
|
238
400
|
output: {
|
|
239
401
|
// Code splitting: when disabled, all dynamic imports are inlined into single bundle
|
|
240
402
|
// When enabled (default), Vite will split chunks based on dynamic imports
|
|
241
|
-
...(codeSplitting
|
|
403
|
+
...(codeSplitting
|
|
404
|
+
? {
|
|
405
|
+
// 把稳定、重量级的 vendor 从业务 chunk 拆出来,提升以下两方面:
|
|
406
|
+
// 1) 并行下载 + 并行解析(多 chunk 同时走)
|
|
407
|
+
// 2) 缓存命中率 — 业务代码改一行不影响 vendor chunk hash,用户无需重下 MB 级的 vendor
|
|
408
|
+
// 分组原则:按依赖的"稳定度 + 体积 + 职责"聚合,避免碎片化,也避免一块巨无霸
|
|
409
|
+
manualChunks: getDefaultManualChunks(),
|
|
410
|
+
}
|
|
411
|
+
: { inlineDynamicImports: true }),
|
|
242
412
|
},
|
|
243
413
|
},
|
|
244
414
|
// Copy public directory
|
|
@@ -329,6 +499,7 @@ function createRecommendViteConfig(options) {
|
|
|
329
499
|
const isStaticAsset = /\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$/i.test(pathname);
|
|
330
500
|
if (isHtmlRequest && !isDevServerPath && !isStaticAsset) {
|
|
331
501
|
// Forward to backend server
|
|
502
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
332
503
|
const http = require('http');
|
|
333
504
|
const proxyReq = http.request({
|
|
334
505
|
hostname: 'localhost',
|
package/lib/preset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
export interface PreconnectPluginOptions {
|
|
3
|
+
/**
|
|
4
|
+
* 需要 preconnect 的 origin 列表。允许传完整 URL,内部会解析为 origin 并去重。
|
|
5
|
+
* 非 http(s) 协议或解析失败的项会被忽略。
|
|
6
|
+
*/
|
|
7
|
+
origins: string[];
|
|
8
|
+
/**
|
|
9
|
+
* preconnect link 的 crossorigin 属性。
|
|
10
|
+
* - `true` 或 `'anonymous'`:`crossorigin="anonymous"`(匹配 `<script crossorigin>` / `<link modulepreload>` 等 CORS 请求)
|
|
11
|
+
* - `'use-credentials'`:`crossorigin="use-credentials"`
|
|
12
|
+
* - `false`:不设置 crossorigin 属性(匹配普通 `<script src>` 等非 CORS 请求)
|
|
13
|
+
*
|
|
14
|
+
* 默认 `'anonymous'`,匹配 Vite 打包输出的 ESM chunks(默认带 crossorigin)。
|
|
15
|
+
*/
|
|
16
|
+
crossOrigin?: boolean | 'anonymous' | 'use-credentials';
|
|
17
|
+
/**
|
|
18
|
+
* 是否同时添加 `dns-prefetch` 作为兜底(对不支持 preconnect 的旧浏览器有效)。默认 false。
|
|
19
|
+
*/
|
|
20
|
+
dnsPrefetchFallback?: boolean;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 注入 `<link rel="preconnect">`(可选附加 `<link rel="dns-prefetch">`)到 HTML head 最前面,
|
|
24
|
+
* 让浏览器提前建立到关键资源域名的 TCP + TLS 连接,减少首屏资源的等待时间。
|
|
25
|
+
*
|
|
26
|
+
* 插件本身不关心域名来源,域名完全由调用方通过 `origins` 传入——上层可以基于 `publicPath`、
|
|
27
|
+
* 环境变量或业务配置动态派生,未来更换 CDN 只需改上层即可。
|
|
28
|
+
*/
|
|
29
|
+
export declare function preconnectPlugin(options: PreconnectPluginOptions): Plugin;
|
|
30
|
+
export default preconnectPlugin;
|
|
31
|
+
//# sourceMappingURL=preconnect-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preconnect-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/preconnect-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAEtD,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,iBAAiB,CAAC;IACxD;;OAEG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AA0BD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAoCzE;AAED,eAAe,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.preconnectPlugin = preconnectPlugin;
|
|
4
|
+
function normalizeOrigins(input) {
|
|
5
|
+
const set = new Set();
|
|
6
|
+
for (const item of input) {
|
|
7
|
+
if (!item)
|
|
8
|
+
continue;
|
|
9
|
+
try {
|
|
10
|
+
const url = new URL(item);
|
|
11
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:')
|
|
12
|
+
continue;
|
|
13
|
+
set.add(url.origin);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// 忽略非法 URL
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return Array.from(set);
|
|
20
|
+
}
|
|
21
|
+
function resolveCrossOriginAttr(value) {
|
|
22
|
+
if (value === false)
|
|
23
|
+
return undefined;
|
|
24
|
+
if (value === 'use-credentials')
|
|
25
|
+
return 'use-credentials';
|
|
26
|
+
// true / 'anonymous' / undefined
|
|
27
|
+
return 'anonymous';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* 注入 `<link rel="preconnect">`(可选附加 `<link rel="dns-prefetch">`)到 HTML head 最前面,
|
|
31
|
+
* 让浏览器提前建立到关键资源域名的 TCP + TLS 连接,减少首屏资源的等待时间。
|
|
32
|
+
*
|
|
33
|
+
* 插件本身不关心域名来源,域名完全由调用方通过 `origins` 传入——上层可以基于 `publicPath`、
|
|
34
|
+
* 环境变量或业务配置动态派生,未来更换 CDN 只需改上层即可。
|
|
35
|
+
*/
|
|
36
|
+
function preconnectPlugin(options) {
|
|
37
|
+
const origins = normalizeOrigins(options.origins);
|
|
38
|
+
const crossOriginAttr = resolveCrossOriginAttr(options.crossOrigin);
|
|
39
|
+
const withDnsPrefetch = options.dnsPrefetchFallback === true;
|
|
40
|
+
return {
|
|
41
|
+
name: 'fullstack-preconnect',
|
|
42
|
+
transformIndexHtml: {
|
|
43
|
+
// pre-order 保证 link 尽量靠前
|
|
44
|
+
order: 'pre',
|
|
45
|
+
handler() {
|
|
46
|
+
if (origins.length === 0)
|
|
47
|
+
return [];
|
|
48
|
+
const tags = [];
|
|
49
|
+
for (const href of origins) {
|
|
50
|
+
tags.push({
|
|
51
|
+
tag: 'link',
|
|
52
|
+
attrs: {
|
|
53
|
+
rel: 'preconnect',
|
|
54
|
+
href,
|
|
55
|
+
...(crossOriginAttr ? { crossorigin: crossOriginAttr } : {}),
|
|
56
|
+
},
|
|
57
|
+
injectTo: 'head-prepend',
|
|
58
|
+
});
|
|
59
|
+
if (withDnsPrefetch) {
|
|
60
|
+
tags.push({
|
|
61
|
+
tag: 'link',
|
|
62
|
+
attrs: { rel: 'dns-prefetch', href },
|
|
63
|
+
injectTo: 'head-prepend',
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return tags;
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
exports.default = preconnectPlugin;
|
|
73
|
+
//# sourceMappingURL=preconnect-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preconnect-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/preconnect-plugin.ts"],"names":[],"mappings":";;AAsDA,4CAoCC;AAnED,SAAS,gBAAgB,CAAC,KAAe;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;YAC1B,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ;gBAAE,SAAS;YACpE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,sBAAsB,CAC7B,KAA6C;IAE7C,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IACtC,IAAI,KAAK,KAAK,iBAAiB;QAAE,OAAO,iBAAiB,CAAC;IAC1D,iCAAiC;IACjC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,gBAAgB,CAAC,OAAgC;IAC/D,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,KAAK,IAAI,CAAC;IAE7D,OAAO;QACL,IAAI,EAAE,sBAAsB;QAC5B,kBAAkB,EAAE;YAClB,yBAAyB;YACzB,KAAK,EAAE,KAAK;YACZ,OAAO;gBACL,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,EAAE,CAAC;gBAEpC,MAAM,IAAI,GAAwB,EAAE,CAAC;gBACrC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;oBAC3B,IAAI,CAAC,IAAI,CAAC;wBACR,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE;4BACL,GAAG,EAAE,YAAY;4BACjB,IAAI;4BACJ,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;yBAC7D;wBACD,QAAQ,EAAE,cAAc;qBACzB,CAAC,CAAC;oBACH,IAAI,eAAe,EAAE,CAAC;wBACpB,IAAI,CAAC,IAAI,CAAC;4BACR,GAAG,EAAE,MAAM;4BACX,KAAK,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE;4BACpC,QAAQ,EAAE,cAAc;yBACzB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-parser-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"route-parser-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAWlD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEjG,UAAU,wBAAwB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yHAAyH;IACzH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sHAAsH;IACtH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAsCD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CA8DR;AAED,eAAe,iBAAiB,CAAC"}
|
|
@@ -32,261 +32,57 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
32
32
|
return result;
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.parseRoutes = exports.normalizeBasePath = void 0;
|
|
39
37
|
exports.routeParserPlugin = routeParserPlugin;
|
|
40
38
|
const fs = __importStar(require("fs"));
|
|
41
39
|
const path = __importStar(require("path"));
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
* Normalize basePath: ensure it starts with '/' and does not end with '/'
|
|
48
|
-
* (Align with rspack behavior)
|
|
49
|
-
*/
|
|
50
|
-
function normalizeBasePath(basePath) {
|
|
51
|
-
if (!basePath || basePath === '/') {
|
|
52
|
-
return '';
|
|
53
|
-
}
|
|
54
|
-
// Ensure starts with /
|
|
55
|
-
let normalized = basePath.startsWith('/') ? basePath : `/${basePath}`;
|
|
56
|
-
// Ensure does not end with /
|
|
57
|
-
if (normalized.endsWith('/')) {
|
|
58
|
-
normalized = normalized.slice(0, -1);
|
|
59
|
-
}
|
|
60
|
-
return normalized;
|
|
61
|
-
}
|
|
62
|
-
function log(level, message, ...args) {
|
|
63
|
-
const prefix = '[route-parser]';
|
|
64
|
-
const logMessage = `${prefix} ${message}`;
|
|
65
|
-
switch (level) {
|
|
66
|
-
case 'log':
|
|
67
|
-
console.log(logMessage, ...args);
|
|
68
|
-
break;
|
|
69
|
-
case 'warn':
|
|
70
|
-
console.warn(logMessage, ...args);
|
|
71
|
-
break;
|
|
72
|
-
case 'error':
|
|
73
|
-
console.error(logMessage, ...args);
|
|
74
|
-
break;
|
|
75
|
-
case 'info':
|
|
76
|
-
console.info(logMessage, ...args);
|
|
77
|
-
break;
|
|
78
|
-
default:
|
|
79
|
-
console.log(logMessage, ...args);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
function calculateFileHash(filePath) {
|
|
83
|
-
try {
|
|
84
|
-
const content = fs.readFileSync(filePath, 'utf-8');
|
|
85
|
-
return crypto.createHash('md5').update(content).digest('hex');
|
|
86
|
-
}
|
|
87
|
-
catch (error) {
|
|
88
|
-
log('warn', 'Failed to calculate file hash:', error.message);
|
|
89
|
-
return null;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
function isRouteComponent(openingElement) {
|
|
93
|
-
return (t.isJSXIdentifier(openingElement.name) &&
|
|
94
|
-
openingElement.name.name === 'Route');
|
|
95
|
-
}
|
|
96
|
-
function evaluateTemplateLiteral(templateLiteral) {
|
|
97
|
-
const quasis = templateLiteral.quasis;
|
|
98
|
-
const expressions = templateLiteral.expressions;
|
|
99
|
-
if (quasis.length === 1 && expressions.length === 0) {
|
|
100
|
-
return quasis[0].value.raw;
|
|
101
|
-
}
|
|
102
|
-
return quasis.map((q) => q.value.raw).join('');
|
|
103
|
-
}
|
|
104
|
-
function extractRouteInfo(openingElement) {
|
|
105
|
-
const routeInfo = {};
|
|
106
|
-
openingElement.attributes.forEach((attr) => {
|
|
107
|
-
if (t.isJSXAttribute(attr) && t.isJSXIdentifier(attr.name)) {
|
|
108
|
-
const name = attr.name.name;
|
|
109
|
-
let value;
|
|
110
|
-
if (attr.value) {
|
|
111
|
-
if (t.isStringLiteral(attr.value)) {
|
|
112
|
-
value = attr.value.value;
|
|
113
|
-
}
|
|
114
|
-
else if (t.isJSXExpressionContainer(attr.value)) {
|
|
115
|
-
const expression = attr.value.expression;
|
|
116
|
-
if (t.isStringLiteral(expression)) {
|
|
117
|
-
value = expression.value;
|
|
118
|
-
}
|
|
119
|
-
else if (t.isTemplateLiteral(expression)) {
|
|
120
|
-
value = evaluateTemplateLiteral(expression);
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
value = true;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
value = true;
|
|
129
|
-
}
|
|
130
|
-
routeInfo[name] = value;
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
return routeInfo;
|
|
134
|
-
}
|
|
135
|
-
function buildFullPath(routeStack, currentRoute) {
|
|
136
|
-
let fullPath = '';
|
|
137
|
-
for (let i = 0; i < routeStack.length; i++) {
|
|
138
|
-
if (routeStack[i].path) {
|
|
139
|
-
let parentPath = routeStack[i].path;
|
|
140
|
-
if (!parentPath.startsWith('/'))
|
|
141
|
-
parentPath = `/${parentPath}`;
|
|
142
|
-
if (parentPath.endsWith('/') && parentPath !== '/') {
|
|
143
|
-
parentPath = parentPath.slice(0, -1);
|
|
144
|
-
}
|
|
145
|
-
fullPath += parentPath === '/' ? '' : parentPath;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
if (currentRoute.index) {
|
|
149
|
-
return fullPath || '/';
|
|
150
|
-
}
|
|
151
|
-
else if (currentRoute.path) {
|
|
152
|
-
const routePath = currentRoute.path;
|
|
153
|
-
if (routePath === '*') {
|
|
154
|
-
return null;
|
|
155
|
-
}
|
|
156
|
-
if (!routePath.startsWith('/')) {
|
|
157
|
-
fullPath = `${fullPath}/${routePath}`;
|
|
158
|
-
}
|
|
159
|
-
else {
|
|
160
|
-
fullPath = routePath;
|
|
161
|
-
}
|
|
162
|
-
if (fullPath === '')
|
|
163
|
-
fullPath = '/';
|
|
164
|
-
if (!fullPath.startsWith('/'))
|
|
165
|
-
fullPath = `/${fullPath}`;
|
|
166
|
-
return fullPath;
|
|
167
|
-
}
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
function parseRoutes(appPath, basePath) {
|
|
171
|
-
try {
|
|
172
|
-
const appFilePath = path.resolve(process.cwd(), appPath);
|
|
173
|
-
if (!fs.existsSync(appFilePath)) {
|
|
174
|
-
throw new Error(`App.tsx file does not exist: ${appFilePath}`);
|
|
175
|
-
}
|
|
176
|
-
const sourceCode = fs.readFileSync(appFilePath, 'utf-8');
|
|
177
|
-
const ast = (0, parser_1.parse)(sourceCode, {
|
|
178
|
-
sourceType: 'module',
|
|
179
|
-
plugins: [
|
|
180
|
-
'jsx',
|
|
181
|
-
'typescript',
|
|
182
|
-
'decorators-legacy',
|
|
183
|
-
'classProperties',
|
|
184
|
-
'objectRestSpread',
|
|
185
|
-
'functionBind',
|
|
186
|
-
'exportDefaultFrom',
|
|
187
|
-
'exportNamespaceFrom',
|
|
188
|
-
'dynamicImport',
|
|
189
|
-
'nullishCoalescingOperator',
|
|
190
|
-
'optionalChaining',
|
|
191
|
-
],
|
|
192
|
-
});
|
|
193
|
-
const routeSet = new Set();
|
|
194
|
-
const routeStack = [];
|
|
195
|
-
(0, traverse_1.default)(ast, {
|
|
196
|
-
JSXElement: {
|
|
197
|
-
enter(nodePath) {
|
|
198
|
-
const { openingElement } = nodePath.node;
|
|
199
|
-
if (isRouteComponent(openingElement)) {
|
|
200
|
-
const routeInfo = extractRouteInfo(openingElement);
|
|
201
|
-
routeStack.push(routeInfo);
|
|
202
|
-
}
|
|
203
|
-
},
|
|
204
|
-
exit(nodePath) {
|
|
205
|
-
const { openingElement } = nodePath.node;
|
|
206
|
-
if (isRouteComponent(openingElement)) {
|
|
207
|
-
const currentRoute = routeStack.pop();
|
|
208
|
-
if (currentRoute && currentRoute.path === '*') {
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
if (currentRoute && (currentRoute.path || currentRoute.index)) {
|
|
212
|
-
const fullPath = buildFullPath(routeStack, currentRoute);
|
|
213
|
-
if (fullPath) {
|
|
214
|
-
routeSet.add(fullPath);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
});
|
|
221
|
-
// Apply basePath to all routes (align with rspack behavior)
|
|
222
|
-
const routes = Array.from(routeSet).map((routePath) => ({
|
|
223
|
-
path: basePath ? `${basePath}${routePath}` : routePath,
|
|
224
|
-
}));
|
|
225
|
-
// Default route also needs basePath
|
|
226
|
-
const defaultPath = basePath ? `${basePath}/` : '/';
|
|
227
|
-
return routes.length > 0 ? routes : [{ path: defaultPath }];
|
|
228
|
-
}
|
|
229
|
-
catch (error) {
|
|
230
|
-
log('warn', 'Route parsing failed, using default routes:', error.message);
|
|
231
|
-
const defaultPath = basePath ? `${basePath}/` : '/';
|
|
232
|
-
return [{ path: defaultPath }];
|
|
233
|
-
}
|
|
234
|
-
}
|
|
40
|
+
const devtool_kits_1 = require("@lark-apaas/devtool-kits");
|
|
41
|
+
// Re-export for backward compatibility
|
|
42
|
+
var devtool_kits_2 = require("@lark-apaas/devtool-kits");
|
|
43
|
+
Object.defineProperty(exports, "normalizeBasePath", { enumerable: true, get: function () { return devtool_kits_2.normalizeBasePath; } });
|
|
44
|
+
Object.defineProperty(exports, "parseRoutes", { enumerable: true, get: function () { return devtool_kits_2.parseRoutesFromFile; } });
|
|
235
45
|
function generateRoutes(appPath, outputPath, basePath, lastHash, cachedRoutes) {
|
|
236
46
|
const appFilePath = path.resolve(process.cwd(), appPath);
|
|
237
47
|
const defaultPath = basePath ? `${basePath}/` : '/';
|
|
238
48
|
if (!fs.existsSync(appFilePath)) {
|
|
239
|
-
|
|
49
|
+
(0, devtool_kits_1.routeParserLog)('warn', `App.tsx file does not exist: ${appFilePath}`);
|
|
240
50
|
return cachedRoutes.value || [{ path: defaultPath }];
|
|
241
51
|
}
|
|
242
|
-
const currentHash = calculateFileHash(appFilePath);
|
|
243
|
-
// Check if we need to regenerate
|
|
52
|
+
const currentHash = (0, devtool_kits_1.calculateFileHash)(appFilePath);
|
|
244
53
|
if (lastHash.value === currentHash && cachedRoutes.value) {
|
|
245
54
|
return cachedRoutes.value;
|
|
246
55
|
}
|
|
247
56
|
lastHash.value = currentHash;
|
|
248
|
-
const routes =
|
|
57
|
+
const routes = (0, devtool_kits_1.parseRoutesFromFile)(appPath, basePath);
|
|
249
58
|
cachedRoutes.value = routes;
|
|
250
|
-
// Ensure output directory exists
|
|
251
59
|
const outputDir = path.dirname(outputPath);
|
|
252
60
|
if (!fs.existsSync(outputDir)) {
|
|
253
61
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
254
62
|
}
|
|
255
|
-
// Write routes.json
|
|
256
63
|
fs.writeFileSync(outputPath, JSON.stringify(routes, null, 2));
|
|
257
|
-
|
|
64
|
+
(0, devtool_kits_1.routeParserLog)('info', `Generated routes.json (${routes.length} routes)`);
|
|
258
65
|
return routes;
|
|
259
66
|
}
|
|
260
67
|
function routeParserPlugin(options = {}) {
|
|
261
68
|
const { appPath = './client/src/app.tsx', outputPath = './dist/client/routes.json', } = options;
|
|
262
|
-
// Get basePath from options or env variable, normalize it (align with rspack behavior)
|
|
263
|
-
// Use ?? so that explicit empty string '' from options is respected (for dev mode)
|
|
264
|
-
// Only undefined falls back to env variable (for prod mode)
|
|
265
69
|
const envBasePath = process.env.CLIENT_BASE_PATH || '';
|
|
266
|
-
const configuredBasePath = normalizeBasePath(options.basePath ?? envBasePath);
|
|
267
|
-
|
|
268
|
-
// This should always be the clientBasePath, not affected by dev/prod basePath logic
|
|
269
|
-
const serveBasePath = normalizeBasePath(options.serveBasePath ?? envBasePath);
|
|
270
|
-
// Single cache (basePath is controlled by caller, like rspack)
|
|
70
|
+
const configuredBasePath = (0, devtool_kits_1.normalizeBasePath)(options.basePath ?? envBasePath);
|
|
71
|
+
const serveBasePath = (0, devtool_kits_1.normalizeBasePath)(options.serveBasePath ?? envBasePath);
|
|
271
72
|
const lastHash = { value: null };
|
|
272
73
|
const cachedRoutes = { value: null };
|
|
273
74
|
return {
|
|
274
75
|
name: 'fullstack-route-parser',
|
|
275
76
|
configureServer(server) {
|
|
276
|
-
// Development mode: use configuredBasePath (should be '' when isDev, set by preset)
|
|
277
77
|
const appFullPath = path.resolve(process.cwd(), appPath);
|
|
278
78
|
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
279
|
-
// Initial generation
|
|
280
79
|
generateRoutes(appPath, fullOutputPath, configuredBasePath, lastHash, cachedRoutes);
|
|
281
|
-
// Watch for changes
|
|
282
80
|
server.watcher.add(appFullPath);
|
|
283
81
|
server.watcher.on('change', (file) => {
|
|
284
82
|
if (file === appFullPath) {
|
|
285
83
|
generateRoutes(appPath, fullOutputPath, configuredBasePath, lastHash, cachedRoutes);
|
|
286
84
|
}
|
|
287
85
|
});
|
|
288
|
-
// Middleware to serve routes.json at ${serveBasePath}/routes.json
|
|
289
|
-
// serveBasePath is based on clientBasePath (not affected by dev/prod basePath logic)
|
|
290
86
|
const routesJsonPath = serveBasePath ? `${serveBasePath}/routes.json` : '/routes.json';
|
|
291
87
|
server.middlewares.use((req, res, next) => {
|
|
292
88
|
const urlPath = req.url?.split('?')[0];
|
|
@@ -305,12 +101,10 @@ function routeParserPlugin(options = {}) {
|
|
|
305
101
|
});
|
|
306
102
|
},
|
|
307
103
|
buildStart() {
|
|
308
|
-
// Build mode: generate routes with configuredBasePath
|
|
309
104
|
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
310
105
|
generateRoutes(appPath, fullOutputPath, configuredBasePath, lastHash, cachedRoutes);
|
|
311
106
|
},
|
|
312
107
|
generateBundle() {
|
|
313
|
-
// Add routes.json to build output
|
|
314
108
|
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
315
109
|
if (fs.existsSync(fullOutputPath)) {
|
|
316
110
|
this.emitFile({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-parser-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"route-parser-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slardar-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/slardar-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAEtD,UAAU,oBAAoB;IAC5B,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"slardar-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/slardar-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAqB,MAAM,MAAM,CAAC;AAEtD,UAAU,oBAAoB;IAC5B,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAiED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAsCxE;AAED,eAAe,aAAa,CAAC"}
|
|
@@ -11,10 +11,14 @@ function getSlardarScript(bid, globalName) {
|
|
|
11
11
|
slardarScript.onload = function() {
|
|
12
12
|
// Initialize after script loads
|
|
13
13
|
if (window.${globalName}) {
|
|
14
|
+
window.${globalName}('context.merge', {
|
|
15
|
+
tenantId: window.tenantId ?? '',
|
|
16
|
+
appId: window.appId ?? '',
|
|
17
|
+
});
|
|
14
18
|
window.${globalName}('init', {
|
|
15
19
|
bid: '${bid}',
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
env: window.ENVIRONMENT || 'online',
|
|
21
|
+
userId: window.userId ?? '',
|
|
18
22
|
});
|
|
19
23
|
window.${globalName}('start');
|
|
20
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slardar-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/slardar-plugin.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"slardar-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/slardar-plugin.ts"],"names":[],"mappings":";;AAwEA,sCAsCC;AArGD,SAAS,gBAAgB,CAAC,GAAW,EAAE,UAAkB;IACvD,OAAO;;gGAEuF,GAAG,eAAe,UAAU;;;;;;mBAMzG,UAAU;iBACZ,UAAU;;;;iBAIV,UAAU;kBACT,GAAG;;;;iBAIJ,UAAU;;;;;;;;;;;GAWxB,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BN,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,UAAgC,EAAE;IAC9D,MAAM,EAAE,GAAG,GAAG,cAAc,EAAE,UAAU,GAAG,aAAa,EAAE,GAAG,OAAO,CAAC;IAErE,OAAO;QACL,IAAI,EAAE,mBAAmB;QAEzB,kBAAkB,CAAC,IAAI;YACrB,MAAM,IAAI,GAAwB;gBAChC,4BAA4B;gBAC5B;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,gBAAgB,CAAC,GAAG,EAAE,UAAU,CAAC;oBAC3C,QAAQ,EAAE,MAAM;iBACjB;gBACD,kBAAkB;gBAClB;oBACE,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE;wBACL,GAAG,EAAE,gGAAgG;wBACrG,WAAW,EAAE,WAAW;wBACxB,KAAK,EAAE,IAAI;qBACZ;oBACD,QAAQ,EAAE,MAAM;iBACjB;gBACD,wBAAwB;gBACxB;oBACE,GAAG,EAAE,QAAQ;oBACb,QAAQ,EAAE,YAAY,EAAE;oBACxB,QAAQ,EAAE,MAAM;iBACjB;aACF,CAAC;YAEF,OAAO;gBACL,IAAI;gBACJ,IAAI;aACL,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/fullstack-vite-preset",
|
|
3
|
-
"version": "1.0.9-alpha.
|
|
3
|
+
"version": "1.0.9-alpha.50",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src/empty.css",
|
|
@@ -33,9 +33,9 @@
|
|
|
33
33
|
"@babel/parser": "^7.28.0",
|
|
34
34
|
"@babel/traverse": "^7.28.0",
|
|
35
35
|
"@babel/types": "^7.28.2",
|
|
36
|
-
"@lark-apaas/devtool-kits": "^1.2.
|
|
36
|
+
"@lark-apaas/devtool-kits": "^1.2.20",
|
|
37
37
|
"@lark-apaas/styled-jsx": "^1.0.1",
|
|
38
|
-
"@lark-apaas/vite-inspector-plugin": "^1.0.
|
|
38
|
+
"@lark-apaas/vite-inspector-plugin": "^1.0.3",
|
|
39
39
|
"@vitejs/plugin-react": "^4.5.0",
|
|
40
40
|
"clsx": "^2.1.1",
|
|
41
41
|
"colorjs.io": "^0.5.2",
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"@types/node": "^22.15.30",
|
|
57
57
|
"typescript": "^5.9.2",
|
|
58
58
|
"vite": "^7.0.0",
|
|
59
|
-
"vitest": "^2.
|
|
59
|
+
"vitest": "^3.2.4"
|
|
60
60
|
},
|
|
61
61
|
"peerDependencies": {
|
|
62
62
|
"react": ">=16.14.0",
|
package/src/overlay/index.js
CHANGED
|
@@ -145,6 +145,24 @@ function removeAllChildren(element, skip) {
|
|
|
145
145
|
}
|
|
146
146
|
}
|
|
147
147
|
|
|
148
|
+
function getParentOriginFromParams() {
|
|
149
|
+
try {
|
|
150
|
+
var params = new URLSearchParams(window.location.search);
|
|
151
|
+
var origin = params.get('__parentOrigin');
|
|
152
|
+
if (origin) {
|
|
153
|
+
sessionStorage.setItem('__parentOrigin', origin);
|
|
154
|
+
return origin;
|
|
155
|
+
}
|
|
156
|
+
} catch (e) {
|
|
157
|
+
// ignore
|
|
158
|
+
}
|
|
159
|
+
try {
|
|
160
|
+
return sessionStorage.getItem('__parentOrigin') || '';
|
|
161
|
+
} catch (e) {
|
|
162
|
+
return '';
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
148
166
|
function getLegacyParentOrigin() {
|
|
149
167
|
const currentOrigin = window.location?.origin || '';
|
|
150
168
|
if (currentOrigin.includes('force.feishuapp.net')) {
|
|
@@ -167,7 +185,7 @@ function getLegacyParentOrigin() {
|
|
|
167
185
|
|
|
168
186
|
function sendPostMessage(message, targetOrigin) {
|
|
169
187
|
try {
|
|
170
|
-
const parentOrigin = process?.env?.FORCE_FRAMEWORK_DOMAIN_MAIN || getLegacyParentOrigin();
|
|
188
|
+
const parentOrigin = getParentOriginFromParams() || process?.env?.FORCE_FRAMEWORK_DOMAIN_MAIN || getLegacyParentOrigin();
|
|
171
189
|
const origin = targetOrigin || parentOrigin;
|
|
172
190
|
window.parent.postMessage(message, origin);
|
|
173
191
|
} catch (error) {
|
|
@@ -43,6 +43,7 @@ if (!window.__VITE_ERROR_OVERLAY_INITIALIZED__) {
|
|
|
43
43
|
|
|
44
44
|
// ===== HMR API State (用于 toolkit 的统一 HMR API) =====
|
|
45
45
|
let hasErrorInCurrentUpdate = false;
|
|
46
|
+
const hmrBeforeApplyCallbacks = new Set();
|
|
46
47
|
const hmrSuccessCallbacks = new Set();
|
|
47
48
|
const hmrErrorCallbacks = new Set();
|
|
48
49
|
|
|
@@ -120,6 +121,24 @@ if (!window.__VITE_ERROR_OVERLAY_INITIALIZED__) {
|
|
|
120
121
|
}
|
|
121
122
|
|
|
122
123
|
// ===== PostMessage 通信 (与 rspack 对齐) =====
|
|
124
|
+
function getParentOriginFromParams() {
|
|
125
|
+
try {
|
|
126
|
+
var params = new URLSearchParams(window.location.search);
|
|
127
|
+
var origin = params.get('__parentOrigin');
|
|
128
|
+
if (origin) {
|
|
129
|
+
sessionStorage.setItem('__parentOrigin', origin);
|
|
130
|
+
return origin;
|
|
131
|
+
}
|
|
132
|
+
} catch (e) {
|
|
133
|
+
// ignore
|
|
134
|
+
}
|
|
135
|
+
try {
|
|
136
|
+
return sessionStorage.getItem('__parentOrigin') || '';
|
|
137
|
+
} catch (e) {
|
|
138
|
+
return '';
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
|
|
123
142
|
function getLegacyParentOrigin() {
|
|
124
143
|
const currentOrigin = window.location?.origin || '';
|
|
125
144
|
if (currentOrigin.includes('force.feishuapp.net')) {
|
|
@@ -142,7 +161,7 @@ if (!window.__VITE_ERROR_OVERLAY_INITIALIZED__) {
|
|
|
142
161
|
|
|
143
162
|
function sendPostMessage(message, targetOrigin) {
|
|
144
163
|
try {
|
|
145
|
-
const parentOrigin = process.env.FORCE_FRAMEWORK_DOMAIN_MAIN || getLegacyParentOrigin();
|
|
164
|
+
const parentOrigin = getParentOriginFromParams() || process.env.FORCE_FRAMEWORK_DOMAIN_MAIN || getLegacyParentOrigin();
|
|
146
165
|
const origin = targetOrigin || parentOrigin;
|
|
147
166
|
window.parent.postMessage(message, origin);
|
|
148
167
|
} catch (error) {
|
|
@@ -405,8 +424,15 @@ if (!window.__VITE_ERROR_OVERLAY_INITIALIZED__) {
|
|
|
405
424
|
const { createHotContext } = await import(CLIENT_BASE_PATH + '/@vite/client');
|
|
406
425
|
const hot = createHotContext(CLIENT_BASE_PATH + '/@error-overlay.js');
|
|
407
426
|
|
|
408
|
-
// ===== HMR API: beforeUpdate - 重置错误标志 =====
|
|
427
|
+
// ===== HMR API: beforeUpdate - 通知 onBeforeApply 回调 + 重置错误标志 =====
|
|
409
428
|
hot.on('vite:beforeUpdate', () => {
|
|
429
|
+
hmrBeforeApplyCallbacks.forEach((cb) => {
|
|
430
|
+
try {
|
|
431
|
+
cb();
|
|
432
|
+
} catch (e) {
|
|
433
|
+
console.warn('[VITE_HMR] onBeforeApply callback error:', e);
|
|
434
|
+
}
|
|
435
|
+
});
|
|
410
436
|
hasErrorInCurrentUpdate = false;
|
|
411
437
|
});
|
|
412
438
|
|
|
@@ -493,6 +519,15 @@ if (!window.__VITE_ERROR_OVERLAY_INITIALIZED__) {
|
|
|
493
519
|
// ===== Expose HMR API (用于 toolkit 的统一 HMR API) =====
|
|
494
520
|
// @see docs/RFC_HMR_API.md
|
|
495
521
|
window.__VITE_HMR__ = {
|
|
522
|
+
/**
|
|
523
|
+
* 注册 HMR 更新前回调(vite:beforeUpdate 阶段,模块替换之前)
|
|
524
|
+
* @param {Function} callback 回调函数
|
|
525
|
+
* @returns {Function} cleanup 函数
|
|
526
|
+
*/
|
|
527
|
+
onBeforeApply(callback) {
|
|
528
|
+
hmrBeforeApplyCallbacks.add(callback);
|
|
529
|
+
return () => hmrBeforeApplyCallbacks.delete(callback);
|
|
530
|
+
},
|
|
496
531
|
/**
|
|
497
532
|
* 注册 HMR 成功回调
|
|
498
533
|
* @param {Function} callback 成功回调函数
|