@lark-apaas/fullstack-vite-preset 1.0.35-alpha.20260820122246 → 1.0.35

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.
@@ -1 +1 @@
1
- {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAuC,MAAM,MAAM,CAAC;AAsD5E,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,CA0nBZ"}
1
+ {"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAuC,MAAM,MAAM,CAAC;AA6D5E,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;AAiBD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,UAAU,CAktBZ"}
package/lib/preset.js CHANGED
@@ -31,6 +31,8 @@ const hmr_timing_1 = require("./utils/hmr-timing");
31
31
  const ws_watchdog_plugin_1 = require("./vite-plugins/ws-watchdog-plugin");
32
32
  const health_plugin_1 = require("./vite-plugins/health-plugin");
33
33
  const banner_plugin_1 = require("./vite-plugins/banner-plugin");
34
+ const standalone_html_plugin_1 = require("./vite-plugins/standalone-html-plugin");
35
+ const standalone_router_plugin_1 = require("./vite-plugins/standalone-router-plugin");
34
36
  const miaoda_fonts_mirror_plugin_1 = require("./vite-plugins/miaoda-fonts-mirror-plugin");
35
37
  const capabilities_plugin_1 = require("./vite-plugins/capabilities-plugin");
36
38
  function sendBackendUnavailable502(_err, _req, res) {
@@ -49,7 +51,7 @@ function sendBackendUnavailable502(_err, _req, res) {
49
51
  const isLooseMode = process.env.FORCE_FRAMEWORK_BUILD_LOOSE_MODE === 'true';
50
52
  function readAppFlags(rootDir) {
51
53
  try {
52
- return JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(rootDir, 'package.json'), 'utf-8')).flags || {};
54
+ return (JSON.parse(fs_1.default.readFileSync(path_1.default.resolve(rootDir, 'package.json'), 'utf-8')).flags || {});
53
55
  }
54
56
  catch {
55
57
  return {};
@@ -59,6 +61,11 @@ function createRecommendViteConfig(options) {
59
61
  const { isDev = true, enableReactRefresh = isDev, needRoutes = true, clientBasePath = '', publicPath = '', codeSplitting = true, } = options;
60
62
  // Inspector can be disabled via environment variable
61
63
  const enableInspector = isDev && process.env.DISABLE_INSPECTOR !== 'true';
64
+ // standalone 构建:产出可脱离妙搭平台本地访问的产物(miaoda app export-standalone 注入)。
65
+ // 收敛成单个 derived const,不在各处读 env。严格相等:拼错值按平台模式走,不猜测意图。
66
+ // 注意:`vite-react` stack 走的是 packages/coding/coding-preset-vite-react,
67
+ // 那边有一份等价实现;两个 preset 是平行的,改一个必须同步另一个。
68
+ const isStandalone = process.env.MIAODA_BUILD_TARGET === 'standalone';
62
69
  const rootDir = process.cwd();
63
70
  const serverPort = process.env.SERVER_PORT || '3000';
64
71
  const appFlags = readAppFlags(rootDir);
@@ -100,7 +107,9 @@ function createRecommendViteConfig(options) {
100
107
  ...(localDevWebUserHeader
101
108
  ? { 'x-larkgw-suda-webuser': localDevWebUserHeader }
102
109
  : {}),
103
- ...(outboundCsrfToken ? { 'x-suda-csrf-token': outboundCsrfToken } : {}),
110
+ ...(outboundCsrfToken
111
+ ? { 'x-suda-csrf-token': outboundCsrfToken }
112
+ : {}),
104
113
  },
105
114
  },
106
115
  }
@@ -109,7 +118,9 @@ function createRecommendViteConfig(options) {
109
118
  // 从中派生出 CDN origin 用于 preconnect,让浏览器提前建连,减少关键资源等待时间。
110
119
  // Dev 模式下 publicPath 是同域路径(如 /app/xxx),不需要 preconnect。
111
120
  const assetOriginsForPreconnect = [];
112
- if (!isDev && typeof publicPath === 'string' && /^https?:\/\//.test(publicPath)) {
121
+ if (!isDev &&
122
+ typeof publicPath === 'string' &&
123
+ /^https?:\/\//.test(publicPath)) {
113
124
  assetOriginsForPreconnect.push(publicPath);
114
125
  }
115
126
  // 读取构建前生成的路由定义 JSON,供 define 注入到 bundle
@@ -123,14 +134,18 @@ function createRecommendViteConfig(options) {
123
134
  pageRouteDefinitions = JSON.parse(fs_1.default.readFileSync(pageRoutesPath, 'utf-8'));
124
135
  }
125
136
  }
126
- catch { /* ignore */ }
137
+ catch {
138
+ /* ignore */
139
+ }
127
140
  try {
128
141
  const apiRoutesPath = path_1.default.resolve(rootDir, 'dist/api-routes.json');
129
142
  if (fs_1.default.existsSync(apiRoutesPath)) {
130
143
  apiRouteDefinitions = JSON.parse(fs_1.default.readFileSync(apiRoutesPath, 'utf-8'));
131
144
  }
132
145
  }
133
- catch { /* ignore */ }
146
+ catch {
147
+ /* ignore */
148
+ }
134
149
  // Build the plugins array
135
150
  const plugins = [
136
151
  // virtual:capabilities —— client-toolkit 经 client-capability 强依赖的虚拟模块。
@@ -195,7 +210,9 @@ function createRecommendViteConfig(options) {
195
210
  (0, plugin_react_1.default)({
196
211
  jsxRuntime: 'automatic',
197
212
  babel: {
198
- plugins: [[isLooseMode ? '@lark-apaas/styled-jsx/babel' : 'styled-jsx/babel']],
213
+ plugins: [
214
+ [isLooseMode ? '@lark-apaas/styled-jsx/babel' : 'styled-jsx/babel'],
215
+ ],
199
216
  },
200
217
  // Only enable fast refresh in dev mode
201
218
  ...(enableReactRefresh ? {} : { fastRefresh: false }),
@@ -215,7 +232,8 @@ function createRecommendViteConfig(options) {
215
232
  // OG Meta tags injection plugin
216
233
  // 通过字符串 replace('</head>', ...) 操作 head 末尾,与 head-prepend bucket 独立,
217
234
  // 位置不影响最终 HTML;放在 slardar/viewContext 之前,避免夹在那对"反转 pair"中间。
218
- (0, og_meta_plugin_1.ogMetaPlugin)(),
235
+ // standalone 下摘掉:没有 vefaas 替换环节,留着会让标签页标题显示字面 "{{appName}}"
236
+ !isStandalone && (0, og_meta_plugin_1.ogMetaPlugin)(),
219
237
  // 目标 head 顺序(对齐 fullstack-rspack-preset,业务 main.js 在最后):
220
238
  // 1) ViewContext inline script(注入 window.tenantId/appId/userId/ENVIRONMENT)
221
239
  // 2) Slardar loader / Performance / Tea(onload 中读取上述全局变量初始化)
@@ -231,23 +249,48 @@ function createRecommendViteConfig(options) {
231
249
  assetOriginsForPreconnect.length > 0 &&
232
250
  (0, preconnect_plugin_1.preconnectPlugin)({ origins: assetOriginsForPreconnect }),
233
251
  // Performance monitoring plugin (Slardar + Tea)
234
- (0, slardar_plugin_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
252
+ // standalone 下摘掉:注入 Slardar / Tea / performance 三个外链脚本,离线全挂,
253
+ // 联网也是向平台上报无意义数据。
254
+ !isStandalone && (0, slardar_plugin_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
235
255
  // View context injection plugin
236
- (0, view_context_plugin_1.viewContextPlugin)(),
256
+ // standalone 下摘掉:prod 注入 {{userId}} / {{tenantId}} HBS 占位符 —— 脱离 vefaas
257
+ // 没人替换,window.tenantId 会是字符串 "{{tenantId}}",业务代码 if (tenantId) 判成真值。
258
+ !isStandalone && (0, view_context_plugin_1.viewContextPlugin)(),
259
+ // standalone:BrowserRouter → HashRouter。enforce:'pre',必须早于 react() 转译。
260
+ // 不换的话产物首屏直接落 404 页(pathname 匹配不上任何 Route),实测确认。
261
+ isStandalone && (0, standalone_router_plugin_1.standaloneRouterPlugin)(),
262
+ // standalone:剥掉 Vite 写死的 type="module" / crossorigin 并补 defer,
263
+ // 否则 file:// 下被 CORS 拦、或脚本早于 <body> 执行导致白屏。
264
+ isStandalone && (0, standalone_html_plugin_1.standaloneHtmlPlugin)(),
237
265
  // 生产环境:生成 legacy CSS 并注入检测脚本(对齐 rspack-preset)
238
266
  !isDev && (0, css_legacy_plugin_1.cssLegacyPlugin)(),
239
267
  // 生产环境:为旧浏览器提供 polyfill(仅在需要时加载,对齐 rspack-preset)
240
- !isDev && (0, polyfill_plugin_1.polyfillPlugin)(),
268
+ // standalone 下不挂:该形态**不承诺浏览器兼容性**——接口失败、CDN 外链不本地化
269
+ // 都已是明确口径,老浏览器支持同理。带着 polyfill 反而是个没验证过的承诺
270
+ // (standalone 产物从未在老浏览器上测过,file:// 下还可能有别的未知问题)。
271
+ !isDev && !isStandalone && (0, polyfill_plugin_1.polyfillPlugin)(),
241
272
  // HTML output plugin - handles HTML path and dev mode disk write
242
- (0, html_output_plugin_1.htmlOutputPlugin)({
243
- isDev,
244
- outDir: path_1.default.resolve(rootDir, 'dist/client'),
245
- }),
273
+ // standalone 下不挂:本插件在 prod 只做「把 <outDir>/client/index.html 上移到
274
+ // <outDir>/ + minify」。上移会打断 standalone 的相对资源引用(base 是 './',
275
+ // 产物里是 `../assets/x`,上移后多一级指向不存在的路径 → 白屏),而 minify 对
276
+ // standalone 只是锦上添花(此模式下已无 HBS 占位符可保护)。
277
+ // 布局归一化(把入口提到产物根)改由 miaoda-cli 的 nestjs strategy 负责 ——
278
+ // 那一层本来就在给 vite-react 合并 output/output_resource/output_static 三个目录,
279
+ // 同属「产出一棵可直接静态服务的树」的职责。
280
+ !isStandalone &&
281
+ (0, html_output_plugin_1.htmlOutputPlugin)({
282
+ isDev,
283
+ outDir: path_1.default.resolve(rootDir, 'dist/client'),
284
+ }),
246
285
  // HMR timing plugin (dev only)
247
286
  isDev && (0, hmr_timing_1.createHmrTimingPlugin)(),
248
287
  isDev && (0, ws_watchdog_plugin_1.createWsWatchdogPlugin)({ clientBasePath }),
249
288
  // 生产环境下,收集 sourcemap
289
+ // standalone 不挂:该模式压根不产 map;且此插件把 map 搬到 dist/sourcemaps/
290
+ // ——那是**产物目录之外**,CLI 侧的清理够不着,每跑一次 pack 就在用户项目里
291
+ // 积一份带源码的 map,从不回收。
250
292
  !isDev &&
293
+ !isStandalone &&
251
294
  (0, source_map_upload_plugin_1.sourceMapUploadPlugin)({
252
295
  outputDir: path_1.default.resolve(rootDir, 'dist/sourcemaps'),
253
296
  }),
@@ -316,7 +359,13 @@ function createRecommendViteConfig(options) {
316
359
  'process.env.MIAODA_APP_SOURCE': process.env.MIAODA_APP_SOURCE
317
360
  ? JSON.stringify(process.env.MIAODA_APP_SOURCE)
318
361
  : 'undefined',
319
- 'process.env.FORCE_FRAMEWORK_ENVIRONMENT': process.env.FORCE_FRAMEWORK_ENVIRONMENT
362
+ // standalone 导出构建标记(miaoda app pack)。client-toolkit* 的 AppContainer 据此
363
+ // 不挂 Safety 徽标 / 豆包水印 —— 那些判据是 fail-open 的,离线产物里必然显示。
364
+ 'process.env.MIAODA_BUILD_TARGET': process.env.MIAODA_BUILD_TARGET
365
+ ? JSON.stringify(process.env.MIAODA_BUILD_TARGET)
366
+ : 'undefined',
367
+ 'process.env.FORCE_FRAMEWORK_ENVIRONMENT': process.env
368
+ .FORCE_FRAMEWORK_ENVIRONMENT
320
369
  ? JSON.stringify(process.env.FORCE_FRAMEWORK_ENVIRONMENT)
321
370
  : 'undefined',
322
371
  // 路由定义,供客户端匹配 referer_path 和 api
@@ -379,7 +428,7 @@ function createRecommendViteConfig(options) {
379
428
  ...(localDev && localDevWebUserHeader
380
429
  ? { headers: { 'x-larkgw-suda-webuser': localDevWebUserHeader } }
381
430
  : {}),
382
- configure: (proxy) => {
431
+ configure: proxy => {
383
432
  proxy.on('error', (err, req, res) => {
384
433
  sendBackendUnavailable502(err, req, res);
385
434
  });
@@ -401,7 +450,7 @@ function createRecommendViteConfig(options) {
401
450
  [`${clientBasePath}/openapi`]: {
402
451
  target: `http://localhost:${serverPort}`,
403
452
  changeOrigin: true,
404
- configure: (proxy) => {
453
+ configure: proxy => {
405
454
  proxy.on('error', (err, req, res) => {
406
455
  sendBackendUnavailable502(err, req, res);
407
456
  });
@@ -411,7 +460,7 @@ function createRecommendViteConfig(options) {
411
460
  [`${clientBasePath}/__innerapi__`]: {
412
461
  target: `http://localhost:${serverPort}`,
413
462
  changeOrigin: true,
414
- configure: (proxy) => {
463
+ configure: proxy => {
415
464
  proxy.on('error', (err, req, res) => {
416
465
  sendBackendUnavailable502(err, req, res);
417
466
  });
@@ -423,7 +472,7 @@ function createRecommendViteConfig(options) {
423
472
  [`/af/p/${appId}/api`]: {
424
473
  target: `http://localhost:${serverPort}`,
425
474
  changeOrigin: true,
426
- configure: (proxy) => {
475
+ configure: proxy => {
427
476
  proxy.on('error', (err, req, res) => {
428
477
  sendBackendUnavailable502(err, req, res);
429
478
  });
@@ -432,7 +481,7 @@ function createRecommendViteConfig(options) {
432
481
  [`/af/p/${appId}/__innerapi__`]: {
433
482
  target: `http://localhost:${serverPort}`,
434
483
  changeOrigin: true,
435
- configure: (proxy) => {
484
+ configure: proxy => {
436
485
  proxy.on('error', (err, req, res) => {
437
486
  sendBackendUnavailable502(err, req, res);
438
487
  });
@@ -445,17 +494,29 @@ function createRecommendViteConfig(options) {
445
494
  build: {
446
495
  outDir: path_1.default.resolve(rootDir, 'dist/client'),
447
496
  emptyOutDir: false,
448
- sourcemap: isDev ? true : 'hidden', // Align with rspack-preset's devtool config
497
+ // standalone 不产 sourcemap:产物是拿去分发的,map 里的 sourcesContent 内嵌
498
+ // 原始源码(实测真实应用 486 条、含 12 个业务文件),发出去等于附赠全部源码;
499
+ // 且 hidden 模式下产物里没有 sourceMappingURL 引用它,纯属白生成。
500
+ sourcemap: isStandalone ? false : isDev ? true : 'hidden', // 非 standalone 对齐 rspack-preset 的 devtool 配置
449
501
  minify: !isDev ? 'esbuild' : false,
450
502
  // 提高默认 warn limit — 拆 vendor 后单 chunk 仍可能略大,但不是问题
451
- chunkSizeWarningLimit: 800,
503
+ // standalone 刻意产单 chunk,体积必然超阈值;该警告给的建议(拆包 / 开
504
+ // codeSplitting)正是 standalone 不能做的,留着是纯噪音。
505
+ chunkSizeWarningLimit: isStandalone ? Number.POSITIVE_INFINITY : 800,
452
506
  rollupOptions: {
453
507
  input: path_1.default.resolve(rootDir, 'client/index.html'),
454
- output: {
455
- // Code splitting: when disabled, all dynamic imports are inlined into single bundle
456
- // When enabled (default), Vite will split chunks based on dynamic imports
457
- ...(!codeSplitting ? { inlineDynamicImports: true } : {}),
458
- },
508
+ // standalone:产物要能在 file:// 下打开,而 <script type="module"> 在 opaque
509
+ // origin 下必被 CORS 拦,故 JS 体必须是经典脚本 → iife。
510
+ // iife 蕴含 codeSplitting:false,此时带 inlineDynamicImports 会打 WARN 且无效果。
511
+ // ⚠️ 只切 format 不够——Vite 8 的 build-html 仍会写死 type="module" crossorigin,
512
+ // 剥属性与补 defer 由 standaloneHtmlPlugin 负责。
513
+ output: isStandalone
514
+ ? { format: 'iife' }
515
+ : {
516
+ // Code splitting: when disabled, all dynamic imports are inlined into single bundle
517
+ // When enabled (default), Vite will split chunks based on dynamic imports
518
+ ...(!codeSplitting ? { inlineDynamicImports: true } : {}),
519
+ },
459
520
  },
460
521
  // Copy public directory
461
522
  copyPublicDir: true,
@@ -503,7 +564,13 @@ function createRecommendViteConfig(options) {
503
564
  'process.env.MIAODA_APP_SOURCE': process.env.MIAODA_APP_SOURCE
504
565
  ? JSON.stringify(process.env.MIAODA_APP_SOURCE)
505
566
  : 'undefined',
506
- 'process.env.FORCE_FRAMEWORK_ENVIRONMENT': process.env.FORCE_FRAMEWORK_ENVIRONMENT
567
+ // standalone 导出构建标记(miaoda app pack)。client-toolkit* 的 AppContainer 据此
568
+ // 不挂 Safety 徽标 / 豆包水印 —— 那些判据是 fail-open 的,离线产物里必然显示。
569
+ 'process.env.MIAODA_BUILD_TARGET': process.env.MIAODA_BUILD_TARGET
570
+ ? JSON.stringify(process.env.MIAODA_BUILD_TARGET)
571
+ : 'undefined',
572
+ 'process.env.FORCE_FRAMEWORK_ENVIRONMENT': process.env
573
+ .FORCE_FRAMEWORK_ENVIRONMENT
507
574
  ? JSON.stringify(process.env.FORCE_FRAMEWORK_ENVIRONMENT)
508
575
  : 'undefined',
509
576
  },
@@ -558,7 +625,7 @@ function createRecommendViteConfig(options) {
558
625
  ];
559
626
  const isHtmlRequest = req.headers.accept?.includes('text/html');
560
627
  const pathname = req.url?.split('?')[0] || '';
561
- const isDevServerPath = devServerWhiteList.some((item) => pathname.includes(item));
628
+ const isDevServerPath = devServerWhiteList.some(item => pathname.includes(item));
562
629
  const isStaticAsset = /\.(js|css|png|jpg|jpeg|gif|svg|ico|woff|woff2|ttf|eot)$/i.test(pathname);
563
630
  if (isHtmlRequest && !isDevServerPath && !isStaticAsset) {
564
631
  // Forward to backend server
@@ -570,7 +637,9 @@ function createRecommendViteConfig(options) {
570
637
  const forwardedHeaders = {
571
638
  ...req.headers,
572
639
  };
573
- if (localDev && localDevWebUserHeader && !forwardedHeaders['x-larkgw-suda-webuser']) {
640
+ if (localDev &&
641
+ localDevWebUserHeader &&
642
+ !forwardedHeaders['x-larkgw-suda-webuser']) {
574
643
  forwardedHeaders['x-larkgw-suda-webuser'] = localDevWebUserHeader;
575
644
  }
576
645
  if (localDev && !forwardedHeaders['x-suda-csrf-token']) {
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,92 @@
1
+ /**
2
+ * `/dev/health` 的判定实现。
3
+ *
4
+ * 协议(飞书文档 - 启动状态梳理):
5
+ * ```jsonc
6
+ * { "status": "pending" | "ready" | "backend_failed", "ready": boolean }
7
+ * ```
8
+ * - curl 无法访问 → 外壳视为服务启动中,超时后流转「应用启动失败」
9
+ * - status: pending → 应用启动中
10
+ * - status: ready → 流转到前端「应用加载中」
11
+ * - status: backend_failed → 应用启动失败,message 带原因
12
+ *
13
+ * `ready` 恒等于 `status === 'ready'`,是投影而非独立信号(给只认布尔的老外壳用)。
14
+ *
15
+ * ⚠️ **这份实现在多个 preset 里各存一份**(fullstack-vite-preset /
16
+ * coding-vite-preset / coding-preset-vite-react / fullstack-rspack-preset)。
17
+ * 刻意不抽公共包:这些 preset 的公共依赖 `@lark-apaas/devtool-kits` 带
18
+ * ts-morph / babel / pino,为几十行探测逻辑把它变成硬依赖不划算。
19
+ * 代价是**改一处必须同步其余几处**,改动前先全仓搜 `HEALTH_ENDPOINT`。
20
+ */
21
+ export declare const HEALTH_ENDPOINT = "/dev/health";
22
+ export type HealthStatus = 'pending' | 'ready' | 'backend_failed';
23
+ export interface HealthPayload {
24
+ /** 恒等于 `status === 'ready'`,是 status 的投影 */
25
+ ready: boolean;
26
+ status: HealthStatus;
27
+ /** 仅 backend_failed 时出现,供展示与排查;外壳不得据其文本做流程决策 */
28
+ message?: string;
29
+ }
30
+ /**
31
+ * 这个应用是否有 Node 后端。
32
+ *
33
+ * 同一套 preset 同时服务全栈和纯前端应用(jsPage / apex / 升级链路上的存量
34
+ * 应用)。纯前端应用根本没有进程监听 SERVER_PORT,若一律按有后端处理,
35
+ * 它们会在超时后被误报 `backend_failed`——正常应用被判成启动失败。
36
+ *
37
+ * 方向刻意保守:**只有明确是 fullstack 才认为有后端**。最坏是全栈故障探不出
38
+ * (功能失效),而不是正常前端应用被误判(破坏可用应用)。
39
+ */
40
+ export declare function isFullstackApp(): boolean;
41
+ /**
42
+ * 探测本机端口是否有人监听。只做 TCP 连接,不发 HTTP。
43
+ *
44
+ * **必须同时探 IPv4 和 IPv6**:nrf 模板的 `main.ts` 用
45
+ * `app.listen(port, process.env.SERVER_HOST || 'localhost')`,而 `localhost`
46
+ * 在 macOS / 部分 Node 版本下解析到 `::1`,Nest 便只监听 IPv6 环回。
47
+ * 此时只探 `127.0.0.1` 会稳定拿到 ECONNREFUSED,把活着的服务误判成挂了。
48
+ * 实测:`lsof` 显示 `TCP [::1]:3000 (LISTEN)`,`127.0.0.1` 连接被拒。
49
+ */
50
+ export declare function probePort(port: number, hosts?: string[], timeoutMs?: number): Promise<boolean>;
51
+ /**
52
+ * 构造「后端编译当前是不是挂着的」判定器。
53
+ *
54
+ * 这是对超时的**加速**,不是替代:命中就立刻判失败不用干等,没命中什么都不做、
55
+ * 继续走超时兜底。所以 nest / tsc 换了输出格式导致匹配不到时,最坏只是「退回等
56
+ * 超时」,既不会误报也不会卡住用户——方向天然安全。
57
+ *
58
+ * **必须记基线偏移**:`dev.js` 以 append 模式写 `server.std.log`,日志跨 dev
59
+ * 会话累积。不设基线的话,上一次会话遗留的 `Found 1 error` 会让新会话刚启动
60
+ * 就误报。构造时记下当前文件大小,之后只看这之后写入的内容;文件被截断或轮转
61
+ * (size < 基线)时基线归零。
62
+ */
63
+ export declare function createCompileErrorScanner(logDir: string): () => boolean;
64
+ export interface HealthProbeOptions {
65
+ /** dev server 自身是否已 listen */
66
+ isClientReady: () => boolean;
67
+ /** 本应用是否有 Node 后端;缺省按 MIAODA_APP_TYPE 判定 */
68
+ hasServer?: boolean;
69
+ /** 后端端口;缺省读 SERVER_PORT,再兜底 3000 */
70
+ serverPort?: number;
71
+ /** 后端绑定的 host;缺省读 SERVER_HOST。探测仍会兜底同时试 127.0.0.1 与 ::1 */
72
+ serverHost?: string;
73
+ /** server.std.log 所在目录;缺省读 LOG_DIR,再兜底 ./logs */
74
+ logDir?: string;
75
+ /** 超时上限(ms),可用 MIAODA_HEALTH_TIMEOUT_MS 覆写 */
76
+ timeoutMs?: number;
77
+ }
78
+ /**
79
+ * 构造健康探测函数。
80
+ *
81
+ * `status` 判定顺序:
82
+ * 0. 前端 dev server 都还没起来 → `pending`;
83
+ * 1. 本应用没有后端(纯前端) → `ready`,永不 `backend_failed`;
84
+ * 2. 日志尾部显示编译没过 → `backend_failed`,不用干等(无条件优先,
85
+ * 因为端口还通也可能是 nest watch 留着旧进程在服务旧代码);
86
+ * 3. 后端端口连得上 → `ready`;
87
+ * 4. 都不是 → 超时前 `pending`,超时后 `backend_failed`。
88
+ *
89
+ * 有状态是因为要记住 dev server 启动时刻(计时锚点)和日志基线偏移。
90
+ */
91
+ export declare function createHealthProbe(options: HealthProbeOptions): () => Promise<HealthPayload>;
92
+ //# sourceMappingURL=health-core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-core.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/health-core.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAE7C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,gBAAgB,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAyBD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAkCD;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,EACZ,KAAK,GAAE,MAAM,EAAO,EACpB,SAAS,SAAO,GACf,OAAO,CAAC,OAAO,CAAC,CAKlB;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,OAAO,CAqCvE;AAED,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,aAAa,EAAE,MAAM,OAAO,CAAC;IAC7B,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,CA4C3F"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HEALTH_ENDPOINT = void 0;
7
+ exports.isFullstackApp = isFullstackApp;
8
+ exports.probePort = probePort;
9
+ exports.createCompileErrorScanner = createCompileErrorScanner;
10
+ exports.createHealthProbe = createHealthProbe;
11
+ const node_fs_1 = __importDefault(require("node:fs"));
12
+ const node_net_1 = __importDefault(require("node:net"));
13
+ const node_path_1 = __importDefault(require("node:path"));
14
+ /**
15
+ * `/dev/health` 的判定实现。
16
+ *
17
+ * 协议(飞书文档 - 启动状态梳理):
18
+ * ```jsonc
19
+ * { "status": "pending" | "ready" | "backend_failed", "ready": boolean }
20
+ * ```
21
+ * - curl 无法访问 → 外壳视为服务启动中,超时后流转「应用启动失败」
22
+ * - status: pending → 应用启动中
23
+ * - status: ready → 流转到前端「应用加载中」
24
+ * - status: backend_failed → 应用启动失败,message 带原因
25
+ *
26
+ * `ready` 恒等于 `status === 'ready'`,是投影而非独立信号(给只认布尔的老外壳用)。
27
+ *
28
+ * ⚠️ **这份实现在多个 preset 里各存一份**(fullstack-vite-preset /
29
+ * coding-vite-preset / coding-preset-vite-react / fullstack-rspack-preset)。
30
+ * 刻意不抽公共包:这些 preset 的公共依赖 `@lark-apaas/devtool-kits` 带
31
+ * ts-morph / babel / pino,为几十行探测逻辑把它变成硬依赖不划算。
32
+ * 代价是**改一处必须同步其余几处**,改动前先全仓搜 `HEALTH_ENDPOINT`。
33
+ */
34
+ exports.HEALTH_ENDPOINT = '/dev/health';
35
+ /** 后端端口多久没起来就判失败。主要服务「首次进入应用」这一个场景。 */
36
+ const DEFAULT_TIMEOUT_MS = 30000;
37
+ /** 探测结果缓存时长,避免外壳高频轮询时每次建连 */
38
+ const PROBE_CACHE_MS = 1000;
39
+ /** 只读日志尾部这么多字节,避免日志膨胀后拖慢探测 */
40
+ const TAIL_BYTES = 32 * 1024;
41
+ /**
42
+ * `nest start --watch` 每轮编译结束都会打这一行,N>0 即本轮没过。
43
+ * `errors?` 的 `s` 只为可读性——`error` 本就是 `errors` 的前缀,加不加都能匹配。
44
+ */
45
+ const COMPILE_RESULT = /Found (\d+) errors?/g;
46
+ // eslint-disable-next-line no-control-regex
47
+ const ANSI = /\u001b\[[0-9;]*[a-zA-Z]/g;
48
+ /**
49
+ * 妙搭 fullstack stack 的 `MIAODA_APP_TYPE` 取值。口径与
50
+ * `@lark-apaas/coding-preset-vite-react` 的 `isFullstack` 一致——health 判定
51
+ * 与 dev 反代必须对同一个应用给出相同结论,否则会出现「反代到 3000 但 health
52
+ * 说没有后端」这类自相矛盾的状态。
53
+ */
54
+ const FULLSTACK_APP_TYPE = '3';
55
+ /**
56
+ * 这个应用是否有 Node 后端。
57
+ *
58
+ * 同一套 preset 同时服务全栈和纯前端应用(jsPage / apex / 升级链路上的存量
59
+ * 应用)。纯前端应用根本没有进程监听 SERVER_PORT,若一律按有后端处理,
60
+ * 它们会在超时后被误报 `backend_failed`——正常应用被判成启动失败。
61
+ *
62
+ * 方向刻意保守:**只有明确是 fullstack 才认为有后端**。最坏是全栈故障探不出
63
+ * (功能失效),而不是正常前端应用被误判(破坏可用应用)。
64
+ */
65
+ function isFullstackApp() {
66
+ return process.env.MIAODA_APP_TYPE === FULLSTACK_APP_TYPE;
67
+ }
68
+ /**
69
+ * 端口取值收口。**必须校验合法性**:调用方常写 `Number(process.env.SERVER_PORT)`,
70
+ * env 缺失或非数字时会得到 `NaN`,而 `??` 只挡 null/undefined 挡不住 NaN,
71
+ * NaN 会一路透传到探测端把「连不上」坐实,最终把正常应用误判成 backend_failed。
72
+ */
73
+ function toPort(value) {
74
+ const n = Number(value);
75
+ return Number.isInteger(n) && n >= 1 && n <= 65535 ? n : undefined;
76
+ }
77
+ function connectOnce(port, host, timeoutMs) {
78
+ return new Promise((resolve) => {
79
+ const socket = new node_net_1.default.Socket();
80
+ let settled = false;
81
+ const done = (alive) => {
82
+ if (settled)
83
+ return;
84
+ settled = true;
85
+ socket.destroy();
86
+ resolve(alive);
87
+ };
88
+ socket.setTimeout(timeoutMs);
89
+ socket.once('connect', () => done(true));
90
+ socket.once('timeout', () => done(false));
91
+ socket.once('error', () => done(false));
92
+ try {
93
+ socket.connect(port, host);
94
+ }
95
+ catch {
96
+ done(false);
97
+ }
98
+ });
99
+ }
100
+ /**
101
+ * 探测本机端口是否有人监听。只做 TCP 连接,不发 HTTP。
102
+ *
103
+ * **必须同时探 IPv4 和 IPv6**:nrf 模板的 `main.ts` 用
104
+ * `app.listen(port, process.env.SERVER_HOST || 'localhost')`,而 `localhost`
105
+ * 在 macOS / 部分 Node 版本下解析到 `::1`,Nest 便只监听 IPv6 环回。
106
+ * 此时只探 `127.0.0.1` 会稳定拿到 ECONNREFUSED,把活着的服务误判成挂了。
107
+ * 实测:`lsof` 显示 `TCP [::1]:3000 (LISTEN)`,`127.0.0.1` 连接被拒。
108
+ */
109
+ async function probePort(port, hosts = [], timeoutMs = 1000) {
110
+ if (!Number.isInteger(port) || port <= 0 || port > 65535)
111
+ return false;
112
+ const targets = [...new Set([...hosts.filter(Boolean), '127.0.0.1', '::1'])];
113
+ const results = await Promise.all(targets.map((h) => connectOnce(port, h, timeoutMs)));
114
+ return results.some(Boolean);
115
+ }
116
+ function safeSize(file) {
117
+ try {
118
+ return node_fs_1.default.statSync(file).size;
119
+ }
120
+ catch {
121
+ return 0;
122
+ }
123
+ }
124
+ /**
125
+ * 构造「后端编译当前是不是挂着的」判定器。
126
+ *
127
+ * 这是对超时的**加速**,不是替代:命中就立刻判失败不用干等,没命中什么都不做、
128
+ * 继续走超时兜底。所以 nest / tsc 换了输出格式导致匹配不到时,最坏只是「退回等
129
+ * 超时」,既不会误报也不会卡住用户——方向天然安全。
130
+ *
131
+ * **必须记基线偏移**:`dev.js` 以 append 模式写 `server.std.log`,日志跨 dev
132
+ * 会话累积。不设基线的话,上一次会话遗留的 `Found 1 error` 会让新会话刚启动
133
+ * 就误报。构造时记下当前文件大小,之后只看这之后写入的内容;文件被截断或轮转
134
+ * (size < 基线)时基线归零。
135
+ */
136
+ function createCompileErrorScanner(logDir) {
137
+ const file = node_path_1.default.join(logDir, 'server.std.log');
138
+ let baseline = safeSize(file);
139
+ return function hasCompileError() {
140
+ let fd;
141
+ try {
142
+ const size = safeSize(file);
143
+ if (size < baseline)
144
+ baseline = 0; // 日志被截断/轮转
145
+ const available = size - baseline;
146
+ if (available <= 0)
147
+ return false;
148
+ const length = Math.min(available, TAIL_BYTES);
149
+ const buf = Buffer.alloc(length);
150
+ fd = node_fs_1.default.openSync(file, 'r');
151
+ node_fs_1.default.readSync(fd, buf, 0, length, size - length);
152
+ const text = buf.toString('utf8').replace(ANSI, '');
153
+ // 取最后一次结果:修好之后 tsc 会再打一条 `Found 0 errors`,
154
+ // 只有以最后一条为准才能正确恢复。
155
+ let last = null;
156
+ for (const m of text.matchAll(COMPILE_RESULT))
157
+ last = Number(m[1]);
158
+ return last !== null && last > 0;
159
+ }
160
+ catch {
161
+ // 日志缺失 / 不可读 → 不下结论,交给超时兜底
162
+ return false;
163
+ }
164
+ finally {
165
+ if (fd !== undefined) {
166
+ try {
167
+ node_fs_1.default.closeSync(fd);
168
+ }
169
+ catch {
170
+ // 关闭失败不影响本次扫描结果,且 fd 会随进程退出被回收。
171
+ // 刻意不打日志:health 被外壳高频轮询,打了会刷屏掩盖真正的错误。
172
+ }
173
+ }
174
+ }
175
+ };
176
+ }
177
+ function resolveTimeoutMs(explicit) {
178
+ if (typeof explicit === 'number')
179
+ return explicit;
180
+ const raw = Number(process.env.MIAODA_HEALTH_TIMEOUT_MS);
181
+ return Number.isFinite(raw) && raw > 0 ? raw : DEFAULT_TIMEOUT_MS;
182
+ }
183
+ function settle(status, message) {
184
+ return message === undefined
185
+ ? { ready: status === 'ready', status }
186
+ : { ready: status === 'ready', status, message };
187
+ }
188
+ /**
189
+ * 构造健康探测函数。
190
+ *
191
+ * `status` 判定顺序:
192
+ * 0. 前端 dev server 都还没起来 → `pending`;
193
+ * 1. 本应用没有后端(纯前端) → `ready`,永不 `backend_failed`;
194
+ * 2. 日志尾部显示编译没过 → `backend_failed`,不用干等(无条件优先,
195
+ * 因为端口还通也可能是 nest watch 留着旧进程在服务旧代码);
196
+ * 3. 后端端口连得上 → `ready`;
197
+ * 4. 都不是 → 超时前 `pending`,超时后 `backend_failed`。
198
+ *
199
+ * 有状态是因为要记住 dev server 启动时刻(计时锚点)和日志基线偏移。
200
+ */
201
+ function createHealthProbe(options) {
202
+ const startedAt = Date.now();
203
+ const serverPort = toPort(options.serverPort) ?? toPort(process.env.SERVER_PORT) ?? 3000;
204
+ const serverHost = options.serverHost ?? process.env.SERVER_HOST ?? '';
205
+ const logDir = node_path_1.default.resolve(options.logDir ?? process.env.LOG_DIR ?? './logs');
206
+ const timeoutMs = resolveTimeoutMs(options.timeoutMs);
207
+ const hasServer = options.hasServer ?? isFullstackApp();
208
+ const hasCompileError = createCompileErrorScanner(logDir);
209
+ let cachedAlive = false;
210
+ let cachedAt = 0;
211
+ return async function probe() {
212
+ try {
213
+ if (!options.isClientReady())
214
+ return settle('pending');
215
+ if (!hasServer)
216
+ return settle('ready');
217
+ if (hasCompileError()) {
218
+ return settle('backend_failed', `后端服务编译未通过,请查看 ${node_path_1.default.join(logDir, 'server.std.log')}`);
219
+ }
220
+ const nowMs = Date.now();
221
+ if (nowMs - cachedAt >= PROBE_CACHE_MS) {
222
+ cachedAlive = await probePort(serverPort, serverHost ? [serverHost] : []);
223
+ cachedAt = nowMs;
224
+ }
225
+ if (cachedAlive)
226
+ return settle('ready');
227
+ const elapsed = Date.now() - startedAt;
228
+ if (elapsed <= timeoutMs)
229
+ return settle('pending');
230
+ return settle('backend_failed', `后端服务未启动:端口 ${serverPort} 在 ${Math.round(elapsed / 1000)}s 内始终未监听,` +
231
+ `请查看 ${node_path_1.default.join(logDir, 'server.std.log')}`);
232
+ }
233
+ catch {
234
+ // 探测本身出错绝不能误报失败:降级为「还在启动」
235
+ return settle('pending');
236
+ }
237
+ };
238
+ }
239
+ //# sourceMappingURL=health-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-core.js","sourceRoot":"","sources":["../../src/vite-plugins/health-core.ts"],"names":[],"mappings":"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"}
@@ -1,35 +1,23 @@
1
1
  import type { Plugin } from 'vite';
2
- import { HEALTH_ENDPOINT } from '@lark-apaas/devtool-kits';
2
+ import { HEALTH_ENDPOINT } from './health-core';
3
3
  /**
4
- * 给妙搭沙箱外壳提供统一的 health endpoint。
4
+ * 给妙搭沙箱外壳提供统一的 health endpoint。协议与判定见 `./health-core`。
5
5
  *
6
- * 协议(飞书文档 - 妙搭应用 Health Check 接口规范):
7
- * - HTTP connection refused / timeout → dev server 没起来 → 外壳重启沙箱
8
- * - 200 + { ready: false, failed: false } → 还在加载,继续轮询
9
- * - 200 + { ready: true, failed: false } → 就绪,放行
10
- * - 200 + { ready: true, failed: true } → 页面可加载但后端已失败,
11
- * 放行并把 message 呈现给用户
12
- *
13
- * nrf **通常**是全栈,但同一套 preset 也承载 archType 2/3/4 的纯前端应用,
14
- * 后端死活的判定必须先确认这个应用真的有后端(见 detectHasServer)。
15
- *
16
- * 两个字段各管一件事、互不聚合:
17
- * - `ready` 只反映 vite dev server 是否 listen,语义与改造前一致;
18
- * - Nest 后端的死活走 `failed`(判定收敛在 @lark-apaas/devtool-kits)。
19
- *
20
- * 后端判定:端口连不上时,先看 server.std.log 尾部有没有 `Found N error`
21
- * 坐实编译没过(有就立刻报错,不用干等),否则等满超时(默认 30s)。
6
+ * nrf **通常**是全栈,但同一套 preset 也承载纯前端应用,所以不能假定一定有后端:
7
+ * 缺省由 `isFullstackApp()`(`MIAODA_APP_TYPE === '3'`)判定,非全栈一律不探后端、
8
+ * 也就永远不会报 `backend_failed`。
22
9
  *
23
10
  * 沙箱外壳探测的是固定根路径 /dev/health,不跟 clientBasePath 走。
24
11
  */
25
12
  export { HEALTH_ENDPOINT };
26
13
  export interface HealthPluginOptions {
27
- /** Nest 后端端口;缺省读 SERVER_PORT,再兜底 3000 */
14
+ /** 后端端口;缺省读 SERVER_PORT,再兜底 3000 */
28
15
  serverPort?: number;
29
16
  /** server.std.log 所在目录;缺省读 LOG_DIR,再兜底 ./logs */
30
17
  logDir?: string;
31
- /** 本应用是否有 Node 后端;缺省按 MIAODA_APP_ARCH_TYPE 推导 */
18
+ /** 本应用是否有 Node 后端;缺省按 MIAODA_APP_TYPE 判定 */
32
19
  hasServer?: boolean;
33
20
  }
34
21
  export declare function healthPlugin(options?: HealthPluginOptions): Plugin;
22
+ export default healthPlugin;
35
23
  //# sourceMappingURL=health-plugin.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"health-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/health-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAClD,OAAO,EAAuB,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,eAAe,EAAE,CAAC;AAqB3B,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAgCtE"}
1
+ {"version":3,"file":"health-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/health-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAiB,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,eAAe,EAAqB,MAAM,eAAe,CAAC;AAEnE;;;;;;;;GAQG;AACH,OAAO,EAAE,eAAe,EAAE,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAoDtE;AAED,eAAe,YAAY,CAAC"}
@@ -2,27 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.HEALTH_ENDPOINT = void 0;
4
4
  exports.healthPlugin = healthPlugin;
5
- const devtool_kits_1 = require("@lark-apaas/devtool-kits");
6
- Object.defineProperty(exports, "HEALTH_ENDPOINT", { enumerable: true, get: function () { return devtool_kits_1.HEALTH_ENDPOINT; } });
7
- /**
8
- * 纯前端应用的 archType。取值口径与 client-toolkit-lite 的 `_isFrontendOnly`
9
- * 保持一致(`capabilityClient.ts`):undefined / '0' / '1' 走老链路(有后端)。
10
- * **改一侧必须同步另一侧**,否则两边对「这个应用有没有后端」的判断会分叉。
11
- */
12
- const FRONTEND_ONLY_ARCH_TYPES = new Set(['2', '3', '4']);
13
- /**
14
- * 这个应用是否真的有 Node 后端。
15
- *
16
- * 不能写死 true:`scripts/dev.js` 无条件同时拉起 dev:server 和 dev:client,
17
- * 但 archType 2/3/4 的纯前端应用根本没有后端监听 SERVER_PORT。写死的话,
18
- * 这类应用会在超时后被误报 failed —— 一个完全正常的应用被判成启动失败。
19
- */
20
- function detectHasServer() {
21
- const archType = process.env.MIAODA_APP_ARCH_TYPE;
22
- return !(archType !== undefined && FRONTEND_ONLY_ARCH_TYPES.has(archType));
23
- }
5
+ const health_core_1 = require("./health-core");
6
+ Object.defineProperty(exports, "HEALTH_ENDPOINT", { enumerable: true, get: function () { return health_core_1.HEALTH_ENDPOINT; } });
24
7
  function healthPlugin(options = {}) {
25
- let clientReady = false;
8
+ let viteReady = false;
26
9
  return {
27
10
  name: 'fullstack-health',
28
11
  apply: 'serve',
@@ -33,20 +16,43 @@ function healthPlugin(options = {}) {
33
16
  // - httpServer.listening 已 true → 已就绪
34
17
  // - 否则注册一次 listening 回调
35
18
  if (!httpServer || httpServer.listening) {
36
- clientReady = true;
19
+ viteReady = true;
37
20
  }
38
21
  else {
39
22
  httpServer.once('listening', () => {
40
- clientReady = true;
23
+ viteReady = true;
41
24
  });
42
25
  }
43
- server.middlewares.use(devtool_kits_1.HEALTH_ENDPOINT, (0, devtool_kits_1.createHealthHandler)({
44
- hasServer: options.hasServer ?? detectHasServer(),
26
+ const probe = (0, health_core_1.createHealthProbe)({
27
+ isClientReady: () => viteReady,
28
+ hasServer: options.hasServer,
45
29
  serverPort: options.serverPort,
46
30
  logDir: options.logDir,
47
- isClientReady: () => clientReady,
48
- }));
31
+ });
32
+ server.middlewares.use(health_core_1.HEALTH_ENDPOINT, (req, res, next) => {
33
+ if (req.method && req.method !== 'GET')
34
+ return next();
35
+ const write = (payload) => {
36
+ res.setHeader('Content-Type', 'application/json');
37
+ res.setHeader('Cache-Control', 'no-store');
38
+ res.statusCode = 200;
39
+ res.end(JSON.stringify(payload));
40
+ };
41
+ // probe() 内部已兜底不会 reject;但 write 本身可能抛(响应已被销毁等),
42
+ // 不接 catch 的话请求会一直挂到外壳超时,还会留下 unhandled rejection。
43
+ void probe()
44
+ .then(write)
45
+ .catch(() => {
46
+ try {
47
+ write({ ready: false, status: 'pending' });
48
+ }
49
+ catch {
50
+ res.end();
51
+ }
52
+ });
53
+ });
49
54
  },
50
55
  };
51
56
  }
57
+ exports.default = healthPlugin;
52
58
  //# sourceMappingURL=health-plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"health-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/health-plugin.ts"],"names":[],"mappings":";;;AAuDA,oCAgCC;AAtFD,2DAAgF;AAwBvE,gGAxBqB,8BAAe,OAwBrB;AAExB;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE1D;;;;;;GAMG;AACH,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;IAClD,OAAO,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC7E,CAAC;AAWD,SAAgB,YAAY,CAAC,UAA+B,EAAE;IAC5D,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,OAAO;QAEd,eAAe,CAAC,MAAqB;YACnC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACrC,QAAQ;YACR,2CAA2C;YAC3C,4CAA4C;YAC5C,0BAA0B;YAC1B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACxC,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;oBAChC,WAAW,GAAG,IAAI,CAAC;gBACrB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,WAAW,CAAC,GAAG,CACpB,8BAAe,EACf,IAAA,kCAAmB,EAAC;gBAClB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,eAAe,EAAE;gBACjD,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,GAAG,EAAE,CAAC,WAAW;aACjC,CAAC,CACH,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"health-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/health-plugin.ts"],"names":[],"mappings":";;;AAwBA,oCAoDC;AA1ED,+CAAmE;AAW1D,gGAXA,6BAAe,OAWA;AAWxB,SAAgB,YAAY,CAAC,UAA+B,EAAE;IAC5D,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,OAAO;QACL,IAAI,EAAE,kBAAkB;QACxB,KAAK,EAAE,OAAO;QAEd,eAAe,CAAC,MAAqB;YACnC,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACrC,QAAQ;YACR,2CAA2C;YAC3C,4CAA4C;YAC5C,0BAA0B;YAC1B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACxC,SAAS,GAAG,IAAI,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;oBAChC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,KAAK,GAAG,IAAA,+BAAiB,EAAC;gBAC9B,aAAa,EAAE,GAAG,EAAE,CAAC,SAAS;gBAC9B,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAC;YAEH,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,6BAAe,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;gBACzD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK;oBAAE,OAAO,IAAI,EAAE,CAAC;gBAEtD,MAAM,KAAK,GAAG,CAAC,OAAgB,EAAE,EAAE;oBACjC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;oBAClD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;oBAC3C,GAAG,CAAC,UAAU,GAAG,GAAG,CAAC;oBACrB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,CAAC,CAAC;gBAEF,iDAAiD;gBACjD,mDAAmD;gBACnD,KAAK,KAAK,EAAE;qBACT,IAAI,CAAC,KAAK,CAAC;qBACX,KAAK,CAAC,GAAG,EAAE;oBACV,IAAI,CAAC;wBACH,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAC7C,CAAC;oBAAC,MAAM,CAAC;wBACP,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,CAAC;gBACH,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"html-output-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/html-output-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAGlE;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA0B/E;AAED,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAwIzE"}
1
+ {"version":3,"file":"html-output-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/html-output-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAC;AAGlE;;;;;GAKG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CA0BjB;AAED,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,KAAK,EAAE,OAAO,CAAC;IACf,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CA2IzE"}
@@ -18,7 +18,7 @@ async function minifyHtmlWithHbsProtection(html) {
18
18
  // Replace HBS expressions with placeholders before minification
19
19
  // to prevent html-minifier-terser from corrupting them
20
20
  const hbsPlaceholders = [];
21
- let processed = html.replace(/\{\{\{?.+?\}\}\}?/g, (match) => {
21
+ let processed = html.replace(/\{\{\{?.+?\}\}\}?/g, match => {
22
22
  const index = hbsPlaceholders.length;
23
23
  hbsPlaceholders.push(match);
24
24
  return `__HBS_${index}__`;
@@ -61,11 +61,11 @@ function htmlOutputPlugin(options) {
61
61
  htmlPath = rollupInput;
62
62
  }
63
63
  else if (Array.isArray(rollupInput)) {
64
- htmlPath = rollupInput.find((f) => f.endsWith('.html')) || '';
64
+ htmlPath = rollupInput.find(f => f.endsWith('.html')) || '';
65
65
  }
66
66
  else if (rollupInput && typeof rollupInput === 'object') {
67
67
  htmlPath =
68
- Object.values(rollupInput).find((f) => f.endsWith('.html')) || '';
68
+ Object.values(rollupInput).find(f => f.endsWith('.html')) || '';
69
69
  }
70
70
  else {
71
71
  htmlPath = path_1.default.resolve(config.root, 'index.html');
@@ -116,11 +116,11 @@ function htmlOutputPlugin(options) {
116
116
  const inputs = Array.isArray(rollupInput)
117
117
  ? rollupInput
118
118
  : Object.values(rollupInput);
119
- htmlPath = inputs.find((f) => f.endsWith('.html'));
119
+ htmlPath = inputs.find(f => f.endsWith('.html'));
120
120
  }
121
121
  if (htmlPath) {
122
122
  devServer.watcher.add(htmlPath);
123
- devServer.watcher.on('change', (file) => {
123
+ devServer.watcher.on('change', file => {
124
124
  if (file === htmlPath) {
125
125
  console.log(`[html-output] HTML changed, regenerating...`);
126
126
  writeHtmlToDisk();
@@ -1 +1 @@
1
- {"version":3,"file":"html-output-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/html-output-plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"html-output-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/html-output-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * standalone 构建:剥掉 Vite 注入的入口 `<script>` 上的 `type="module"` 与 `crossorigin`,
4
+ * 并补 `defer`。
5
+ *
6
+ * **为什么需要**:Vite 8 的 build-html 插件写死这两个属性,完全不看 `output.format`
7
+ * (`vite/dist/node/chunks/node.js` 的 `toScriptTag`)。所以即便 `format: 'iife'` 让 JS
8
+ * **内容**变成了经典脚本,标签仍是 `<script type="module" crossorigin src=...>`。
9
+ * 而 `file://` 下文档 origin 是 `null`(opaque):`type="module"` 按规范强制走 CORS 模式,
10
+ * `crossorigin` 同样把经典脚本切到 CORS 模式 —— 两者各自都足以让产物打不开。
11
+ *
12
+ * **必须补 `defer`**:`type="module"` 隐含 defer 语义。剥掉后脚本退化为 `<head>` 里的
13
+ * 同步经典脚本,在 `<body>` 解析前执行,`document.getElementById('root')` 返回 null,
14
+ * **每个产物都会是空白页**(实测确认)。仅对原本带 `type="module"` 的标签补,
15
+ * 且已有 `async`/`defer` 时不补 —— 用户手写的经典 script 时序由作者决定,不能改。
16
+ *
17
+ * **顺序机制**(注释别写错,这条踩过):`vite:build-html` 自己**不注册**
18
+ * `transformIndexHtml`,而是注入完 asset 标签后**主动 apply** 各插件的 hook,所以我们天然
19
+ * 晚于它。`order: 'post'` 保证晚于**其它** post 阶段的 HTML 变换插件;普通函数形式不进
20
+ * `postHooks`(`resolveHtmlTransforms` 只对对象形式读 `order`),故必须用对象形式。
21
+ *
22
+ * CSS 无需处理:iife 下 rolldown 把样式内联进 JS 运行时注入,不产
23
+ * `<link rel="stylesheet" crossorigin>`。
24
+ */
25
+ export declare function standaloneHtmlPlugin(): Plugin;
26
+ export default standaloneHtmlPlugin;
27
+ //# sourceMappingURL=standalone-html-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-html-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/standalone-html-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAenC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CA4B7C;AAED,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.standaloneHtmlPlugin = standaloneHtmlPlugin;
4
+ /**
5
+ * 匹配整个 `<script ...>` 开标签。属性区用 `(?:"[^"]*"|'[^']*'|[^>])*` 而非 `[^>]*`
6
+ * —— 后者会被属性值里的 `>` 提前截断(如 `onload="if(a>b)f()"`)。
7
+ * 原先「原样重发匹配前缀」能自愈截断,但**追加 defer 之后不再成立**:defer 会被插进
8
+ * 属性值中间,产出 `onload="if(a defer>b)f()"` 这种损坏标签。已实测确认。
9
+ */
10
+ const SCRIPT_TAG_RE = /<script\b((?:"[^"]*"|'[^']*'|[^>])*)>/gi;
11
+ /** 只处理带 src 的标签:inline script 没有这些属性,其内容也可能含 `type: "module"` 字样。 */
12
+ const HAS_SRC_RE = /\bsrc\s*=/i;
13
+ const HAS_TYPE_MODULE_RE = /\stype\s*=\s*(?:"module"|'module'|module\b)/i;
14
+ const HAS_ASYNC_OR_DEFER_RE = /\s(?:async|defer)\b/i;
15
+ /**
16
+ * standalone 构建:剥掉 Vite 注入的入口 `<script>` 上的 `type="module"` 与 `crossorigin`,
17
+ * 并补 `defer`。
18
+ *
19
+ * **为什么需要**:Vite 8 的 build-html 插件写死这两个属性,完全不看 `output.format`
20
+ * (`vite/dist/node/chunks/node.js` 的 `toScriptTag`)。所以即便 `format: 'iife'` 让 JS
21
+ * **内容**变成了经典脚本,标签仍是 `<script type="module" crossorigin src=...>`。
22
+ * 而 `file://` 下文档 origin 是 `null`(opaque):`type="module"` 按规范强制走 CORS 模式,
23
+ * `crossorigin` 同样把经典脚本切到 CORS 模式 —— 两者各自都足以让产物打不开。
24
+ *
25
+ * **必须补 `defer`**:`type="module"` 隐含 defer 语义。剥掉后脚本退化为 `<head>` 里的
26
+ * 同步经典脚本,在 `<body>` 解析前执行,`document.getElementById('root')` 返回 null,
27
+ * **每个产物都会是空白页**(实测确认)。仅对原本带 `type="module"` 的标签补,
28
+ * 且已有 `async`/`defer` 时不补 —— 用户手写的经典 script 时序由作者决定,不能改。
29
+ *
30
+ * **顺序机制**(注释别写错,这条踩过):`vite:build-html` 自己**不注册**
31
+ * `transformIndexHtml`,而是注入完 asset 标签后**主动 apply** 各插件的 hook,所以我们天然
32
+ * 晚于它。`order: 'post'` 保证晚于**其它** post 阶段的 HTML 变换插件;普通函数形式不进
33
+ * `postHooks`(`resolveHtmlTransforms` 只对对象形式读 `order`),故必须用对象形式。
34
+ *
35
+ * CSS 无需处理:iife 下 rolldown 把样式内联进 JS 运行时注入,不产
36
+ * `<link rel="stylesheet" crossorigin>`。
37
+ */
38
+ function standaloneHtmlPlugin() {
39
+ return {
40
+ name: 'miaoda-standalone-html',
41
+ enforce: 'post',
42
+ // 仅 build。挂载只按 isStandalone 判断,与 isDev 正交——若有人在 shell 里
43
+ // export MIAODA_BUILD_TARGET=standalone 再起 dev server,没有这行会把
44
+ // /@vite/client 的 type="module" 也剥掉,dev server 直接哑掉且报错指不到原因。
45
+ apply: 'build',
46
+ transformIndexHtml: {
47
+ order: 'post',
48
+ handler(html) {
49
+ return html.replace(SCRIPT_TAG_RE, (tag, attrs) => {
50
+ if (!HAS_SRC_RE.test(attrs))
51
+ return tag;
52
+ const hadModule = HAS_TYPE_MODULE_RE.test(attrs);
53
+ let cleaned = attrs
54
+ .replace(/\s+type\s*=\s*(?:"module"|'module'|module\b)/gi, '')
55
+ .replace(/\s+crossorigin(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'>]*))?/gi, '');
56
+ if (hadModule && !HAS_ASYNC_OR_DEFER_RE.test(cleaned)) {
57
+ cleaned += ' defer';
58
+ }
59
+ return `<script${cleaned}>`;
60
+ });
61
+ },
62
+ },
63
+ };
64
+ }
65
+ exports.default = standaloneHtmlPlugin;
66
+ //# sourceMappingURL=standalone-html-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-html-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/standalone-html-plugin.ts"],"names":[],"mappings":";;AAsCA,oDA4BC;AAhED;;;;;GAKG;AACH,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEhE,qEAAqE;AACrE,MAAM,UAAU,GAAG,YAAY,CAAC;AAChC,MAAM,kBAAkB,GAAG,8CAA8C,CAAC;AAC1E,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAErD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,SAAgB,oBAAoB;IAClC,OAAO;QACL,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,MAAM;QACf,wDAAwD;QACxD,6DAA6D;QAC7D,6DAA6D;QAC7D,KAAK,EAAE,OAAO;QACd,kBAAkB,EAAE;YAClB,KAAK,EAAE,MAAM;YACb,OAAO,CAAC,IAAY;gBAClB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE;oBAChE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;wBAAE,OAAO,GAAG,CAAC;oBACxC,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAI,OAAO,GAAG,KAAK;yBAChB,OAAO,CAAC,gDAAgD,EAAE,EAAE,CAAC;yBAC7D,OAAO,CACN,2DAA2D,EAC3D,EAAE,CACH,CAAC;oBACJ,IAAI,SAAS,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;wBACtD,OAAO,IAAI,QAAQ,CAAC;oBACtB,CAAC;oBACD,OAAO,UAAU,OAAO,GAAG,CAAC;gBAC9B,CAAC,CAAC,CAAC;YACL,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { Plugin } from 'vite';
2
+ /**
3
+ * standalone 构建:把 `BrowserRouter` / `createBrowserRouter` 换成 hash 版。
4
+ *
5
+ * **为什么必须换**(实测数据,别按"锦上添花"理解):
6
+ * `BrowserRouter` 拿 `location.pathname` 匹配路由。脱离平台后:
7
+ * - `file://` 下 pathname 是完整文件系统路径(`/Users/x/dist/index.html`),
8
+ * 匹配不上任何 `<Route>`,首屏直接落 `<Route path="*">` → **404 页**
9
+ * - 起了本地 server 也只有访问 `/` 才对,直接开 `/index.html` 仍是 404 页;
10
+ * 深链 `/about` 还要 server 配 SPA fallback,`npx serve` 默认没有
11
+ * - `pushState` 在 `file://` 的 opaque origin 下抛 `SecurityError`
12
+ * 换成 hash 版后三个问题同时消失:只读写 `location.hash`,不碰 pathname、不调 pushState,
13
+ * 链接变成 `index.html#/about`,放哪个目录都能用。
14
+ *
15
+ * **替换面是用户源码全量**,不限于入口文件 —— `BrowserRouter` 可能写在 `app.tsx` 或
16
+ * 自建的 providers 里。靠 `node_modules` 排除保证不动 react-router 自身的导出定义
17
+ * (改那里会直接崩)。
18
+ *
19
+ * `enforce: 'pre'` 是必需的:必须早于 react 插件转译,那时 JSX 标签名还是原样文本。
20
+ * `apply: 'build'` 保证 dev / 平台预览行为完全不变。
21
+ */
22
+ export declare function standaloneRouterPlugin(): Plugin;
23
+ export default standaloneRouterPlugin;
24
+ //# sourceMappingURL=standalone-router-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-router-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/standalone-router-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAYnC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAc/C;AAED,eAAe,sBAAsB,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.standaloneRouterPlugin = standaloneRouterPlugin;
4
+ /** 只处理用户源码里的 JS/TS。CSS / JSON 等不含标识符,node_modules 更不能碰。 */
5
+ const SCRIPT_ID_RE = /\.(?:[cm]?[jt]sx?)(?:\?.*)?$/i;
6
+ /**
7
+ * `createBrowserRouter` 必须先于 `BrowserRouter` 判定存在性,但替换本身靠词边界隔离:
8
+ * `\bBrowserRouter\b` 在 `createBrowserRouter` 里匹配不到(`e` 与 `B` 都是词字符,无边界)。
9
+ */
10
+ const CREATE_RE = /\bcreateBrowserRouter\b/g;
11
+ const ROUTER_RE = /\bBrowserRouter\b/g;
12
+ /**
13
+ * standalone 构建:把 `BrowserRouter` / `createBrowserRouter` 换成 hash 版。
14
+ *
15
+ * **为什么必须换**(实测数据,别按"锦上添花"理解):
16
+ * `BrowserRouter` 拿 `location.pathname` 匹配路由。脱离平台后:
17
+ * - `file://` 下 pathname 是完整文件系统路径(`/Users/x/dist/index.html`),
18
+ * 匹配不上任何 `<Route>`,首屏直接落 `<Route path="*">` → **404 页**
19
+ * - 起了本地 server 也只有访问 `/` 才对,直接开 `/index.html` 仍是 404 页;
20
+ * 深链 `/about` 还要 server 配 SPA fallback,`npx serve` 默认没有
21
+ * - `pushState` 在 `file://` 的 opaque origin 下抛 `SecurityError`
22
+ * 换成 hash 版后三个问题同时消失:只读写 `location.hash`,不碰 pathname、不调 pushState,
23
+ * 链接变成 `index.html#/about`,放哪个目录都能用。
24
+ *
25
+ * **替换面是用户源码全量**,不限于入口文件 —— `BrowserRouter` 可能写在 `app.tsx` 或
26
+ * 自建的 providers 里。靠 `node_modules` 排除保证不动 react-router 自身的导出定义
27
+ * (改那里会直接崩)。
28
+ *
29
+ * `enforce: 'pre'` 是必需的:必须早于 react 插件转译,那时 JSX 标签名还是原样文本。
30
+ * `apply: 'build'` 保证 dev / 平台预览行为完全不变。
31
+ */
32
+ function standaloneRouterPlugin() {
33
+ return {
34
+ name: 'miaoda-standalone-router',
35
+ enforce: 'pre',
36
+ apply: 'build',
37
+ transform(code, id) {
38
+ if (id.includes('node_modules'))
39
+ return null;
40
+ if (!SCRIPT_ID_RE.test(id))
41
+ return null;
42
+ if (!code.includes('BrowserRouter'))
43
+ return null;
44
+ return code
45
+ .replace(CREATE_RE, 'createHashRouter')
46
+ .replace(ROUTER_RE, 'HashRouter');
47
+ },
48
+ };
49
+ }
50
+ exports.default = standaloneRouterPlugin;
51
+ //# sourceMappingURL=standalone-router-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-router-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/standalone-router-plugin.ts"],"names":[],"mappings":";;AAgCA,wDAcC;AA5CD,2DAA2D;AAC3D,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAErD;;;GAGG;AACH,MAAM,SAAS,GAAG,0BAA0B,CAAC;AAC7C,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,sBAAsB;IACpC,OAAO;QACL,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,OAAO;QACd,SAAS,CAAC,IAAY,EAAE,EAAU;YAChC,IAAI,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC;YACxC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;gBAAE,OAAO,IAAI,CAAC;YACjD,OAAO,IAAI;iBACR,OAAO,CAAC,SAAS,EAAE,kBAAkB,CAAC;iBACtC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;AACJ,CAAC;AAED,kBAAe,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lark-apaas/fullstack-vite-preset",
3
- "version": "1.0.35-alpha.20260820122246",
3
+ "version": "1.0.35",
4
4
  "files": [
5
5
  "lib",
6
6
  "src/empty.css",
@@ -34,7 +34,7 @@
34
34
  "@babel/parser": "^7.28.0",
35
35
  "@babel/traverse": "^7.28.0",
36
36
  "@babel/types": "^7.28.2",
37
- "@lark-apaas/devtool-kits": "1.2.25-alpha.20260820122249",
37
+ "@lark-apaas/devtool-kits": "^1.2.24",
38
38
  "@lark-apaas/styled-jsx": "^1.0.1",
39
39
  "@lark-apaas/vite-inspector-plugin": "^1.0.3",
40
40
  "@vitejs/plugin-react": "^4.5.0",