@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 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
@@ -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"}
@@ -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;AA+C9D,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;AAaD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,UAAU,CA+XZ"}
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 ? {} : { inlineDynamicImports: true }),
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,4 +1,5 @@
1
1
  import type { Plugin } from 'vite';
2
+ export { normalizeBasePath, parseRoutesFromFile as parseRoutes } from '@lark-apaas/devtool-kits';
2
3
  interface RouteParserPluginOptions {
3
4
  appPath?: string;
4
5
  outputPath?: string;
@@ -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;AAQlD,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;AA2QD,wBAAgB,iBAAiB,CAC/B,OAAO,GAAE,wBAA6B,GACrC,MAAM,CA4ER;AAED,eAAe,iBAAiB,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 crypto = __importStar(require("crypto"));
43
- const parser_1 = require("@babel/parser");
44
- const traverse_1 = __importDefault(require("@babel/traverse"));
45
- const t = __importStar(require("@babel/types"));
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
- log('warn', `App.tsx file does not exist: ${appFilePath}`);
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 = parseRoutes(appPath, basePath);
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
- log('info', `Generated routes.json with ${routes.length} routes`);
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
- // serveBasePath is used for the middleware path (where routes.json is served)
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":"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"}
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;AA6DD,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,MAAM,CAsCxE;AAED,eAAe,aAAa,CAAC"}
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
- // Four types: dev/boe/pre/online
17
- env: 'online',
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":";;AAoEA,sCAsCC;AAjGD,SAAS,gBAAgB,CAAC,GAAW,EAAE,UAAkB;IACvD,OAAO;;gGAEuF,GAAG,eAAe,UAAU;;;;;;mBAMzG,UAAU;iBACZ,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"}
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.5",
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.18",
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.2",
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.1.8"
59
+ "vitest": "^3.2.4"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "react": ">=16.14.0",
@@ -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 成功回调函数