@lark-apaas/coding-preset-vite-react 0.1.0

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.
Files changed (93) hide show
  1. package/LICENSE +13 -0
  2. package/lib/index.d.ts +52 -0
  3. package/lib/index.d.ts.map +1 -0
  4. package/lib/index.js +410 -0
  5. package/lib/index.js.map +1 -0
  6. package/lib/plugins/capabilities.d.ts +23 -0
  7. package/lib/plugins/capabilities.d.ts.map +1 -0
  8. package/lib/plugins/capabilities.js +151 -0
  9. package/lib/plugins/capabilities.js.map +1 -0
  10. package/lib/plugins/dev-logs.d.ts +44 -0
  11. package/lib/plugins/dev-logs.d.ts.map +1 -0
  12. package/lib/plugins/dev-logs.js +544 -0
  13. package/lib/plugins/dev-logs.js.map +1 -0
  14. package/lib/plugins/error-overlay.d.ts +19 -0
  15. package/lib/plugins/error-overlay.d.ts.map +1 -0
  16. package/lib/plugins/error-overlay.js +136 -0
  17. package/lib/plugins/error-overlay.js.map +1 -0
  18. package/lib/plugins/fonts-mirror.d.ts +14 -0
  19. package/lib/plugins/fonts-mirror.d.ts.map +1 -0
  20. package/lib/plugins/fonts-mirror.js +70 -0
  21. package/lib/plugins/fonts-mirror.js.map +1 -0
  22. package/lib/plugins/health.d.ts +19 -0
  23. package/lib/plugins/health.d.ts.map +1 -0
  24. package/lib/plugins/health.js +36 -0
  25. package/lib/plugins/health.js.map +1 -0
  26. package/lib/plugins/hmr-timing.d.ts +13 -0
  27. package/lib/plugins/hmr-timing.d.ts.map +1 -0
  28. package/lib/plugins/hmr-timing.js +93 -0
  29. package/lib/plugins/hmr-timing.js.map +1 -0
  30. package/lib/plugins/html-minify.d.ts +18 -0
  31. package/lib/plugins/html-minify.d.ts.map +1 -0
  32. package/lib/plugins/html-minify.js +100 -0
  33. package/lib/plugins/html-minify.js.map +1 -0
  34. package/lib/plugins/module-alias.d.ts +12 -0
  35. package/lib/plugins/module-alias.d.ts.map +1 -0
  36. package/lib/plugins/module-alias.js +78 -0
  37. package/lib/plugins/module-alias.js.map +1 -0
  38. package/lib/plugins/og-meta.d.ts +21 -0
  39. package/lib/plugins/og-meta.d.ts.map +1 -0
  40. package/lib/plugins/og-meta.js +60 -0
  41. package/lib/plugins/og-meta.js.map +1 -0
  42. package/lib/plugins/polyfill.d.ts +11 -0
  43. package/lib/plugins/polyfill.d.ts.map +1 -0
  44. package/lib/plugins/polyfill.js +140 -0
  45. package/lib/plugins/polyfill.js.map +1 -0
  46. package/lib/plugins/routes.d.ts +26 -0
  47. package/lib/plugins/routes.d.ts.map +1 -0
  48. package/lib/plugins/routes.js +265 -0
  49. package/lib/plugins/routes.js.map +1 -0
  50. package/lib/plugins/slardar.d.ts +24 -0
  51. package/lib/plugins/slardar.d.ts.map +1 -0
  52. package/lib/plugins/slardar.js +74 -0
  53. package/lib/plugins/slardar.js.map +1 -0
  54. package/lib/plugins/static-assets.d.ts +10 -0
  55. package/lib/plugins/static-assets.d.ts.map +1 -0
  56. package/lib/plugins/static-assets.js +297 -0
  57. package/lib/plugins/static-assets.js.map +1 -0
  58. package/lib/plugins/view-context.d.ts +22 -0
  59. package/lib/plugins/view-context.d.ts.map +1 -0
  60. package/lib/plugins/view-context.js +132 -0
  61. package/lib/plugins/view-context.js.map +1 -0
  62. package/lib/plugins/vite-client-patch.d.ts +4 -0
  63. package/lib/plugins/vite-client-patch.d.ts.map +1 -0
  64. package/lib/plugins/vite-client-patch.js +37 -0
  65. package/lib/plugins/vite-client-patch.js.map +1 -0
  66. package/lib/plugins/ws-watchdog.d.ts +22 -0
  67. package/lib/plugins/ws-watchdog.d.ts.map +1 -0
  68. package/lib/plugins/ws-watchdog.js +103 -0
  69. package/lib/plugins/ws-watchdog.js.map +1 -0
  70. package/lib/polyfills/index.d.ts +15 -0
  71. package/lib/polyfills/index.d.ts.map +1 -0
  72. package/lib/polyfills/index.js +36 -0
  73. package/lib/polyfills/index.js.map +1 -0
  74. package/lib/utils/normalize-base-path.d.ts +37 -0
  75. package/lib/utils/normalize-base-path.d.ts.map +1 -0
  76. package/lib/utils/normalize-base-path.js +57 -0
  77. package/lib/utils/normalize-base-path.js.map +1 -0
  78. package/lib/utils/snapdom-proxy.d.ts +12 -0
  79. package/lib/utils/snapdom-proxy.d.ts.map +1 -0
  80. package/lib/utils/snapdom-proxy.js +75 -0
  81. package/lib/utils/snapdom-proxy.js.map +1 -0
  82. package/package.json +63 -0
  83. package/src/empty.css +1 -0
  84. package/src/inspector-stub.js +6 -0
  85. package/src/module-alias/clsx.mjs +8 -0
  86. package/src/module-alias/echarts-for-react.mjs +130 -0
  87. package/src/module-alias/echarts.mjs +43 -0
  88. package/src/module-alias/registry_echarts_theme.mjs +390 -0
  89. package/src/overlay/components.js +94 -0
  90. package/src/overlay/index.js +443 -0
  91. package/src/overlay/vite-client.js +555 -0
  92. package/src/polyfills/index.ts +35 -0
  93. package/src/runtime/ws-watchdog-client.mjs +148 -0
package/LICENSE ADDED
@@ -0,0 +1,13 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2024 Lark Technologies Pte. Ltd. and/or its affiliates
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted,provided that the above copyright notice and this permission notice appear in all copies.
6
+
7
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
8
+ IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
9
+ INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO
10
+ EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
11
+ CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
12
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
13
+ ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
package/lib/index.d.ts ADDED
@@ -0,0 +1,52 @@
1
+ import { type UserConfig } from 'vite';
2
+ /**
3
+ * miaoda-coding vite-react (jsPage) 默认 Vite 配置。
4
+ *
5
+ * 通过环境变量自动读取部署相关参数,用户只需提供项目特有的覆盖:
6
+ *
7
+ * ```ts
8
+ * import { defineConfig } from '@lark-apaas/coding-preset-vite-react';
9
+ * import path from 'node:path';
10
+ *
11
+ * export default defineConfig({
12
+ * resolve: {
13
+ * alias: {
14
+ * '@': path.resolve(__dirname, 'src'),
15
+ * '@shared': path.resolve(__dirname, 'shared'),
16
+ * },
17
+ * },
18
+ * });
19
+ * ```
20
+ *
21
+ * 支持环境变量:
22
+ * - NODE_ENV development | production(默认 development)
23
+ * - CLIENT_BASE_PATH 部署侧 client base path(如 `/app/<id>`)
24
+ * - ASSETS_CDN_PATH 生产 JS/CSS CDN 前缀(可选)
25
+ * - CLIENT_DEV_PORT dev server 端口(默认 8080)
26
+ * - CLIENT_DEV_HOST dev server host(默认 localhost)
27
+ * - FORCE_FRAMEWORK_DOMAIN_MAIN 反向代理域名(启用 wss HMR + 设置 ACAO)
28
+ * - DISABLE_INSPECTOR `true` 关 inspector
29
+ * - MIAODA_FONTS_MIRROR_OFF `1` 关 Google Fonts 代理替换
30
+ * - MIAODA_APP_TYPE 妙搭应用类型(数字字符串,供 lite Safety 徽标判断)
31
+ */
32
+ export declare function defineConfig(overrides?: UserConfig): UserConfig;
33
+ export default defineConfig;
34
+ export { routesPlugin, parseRoutes } from './plugins/routes';
35
+ export { htmlMinifyPlugin, minifyHtmlWithHbsProtection } from './plugins/html-minify';
36
+ export { staticAssetsPlugin } from './plugins/static-assets';
37
+ export { capabilitiesBundlePlugin } from './plugins/capabilities';
38
+ export { errorOverlayPlugin } from './plugins/error-overlay';
39
+ export { hmrTimingPlugin } from './plugins/hmr-timing';
40
+ export { wsWatchdogPlugin } from './plugins/ws-watchdog';
41
+ export { healthMiddlewarePlugin } from './plugins/health';
42
+ export { viewContextPlugin } from './plugins/view-context';
43
+ export { moduleAliasPlugin } from './plugins/module-alias';
44
+ export { ogMetaPlugin } from './plugins/og-meta';
45
+ export { fontsMirrorPlugin } from './plugins/fonts-mirror';
46
+ export { polyfillPlugin } from './plugins/polyfill';
47
+ export { viteClientPatchPlugin } from './plugins/vite-client-patch';
48
+ export { slardarPlugin } from './plugins/slardar';
49
+ export { devLogsPlugin } from './plugins/dev-logs';
50
+ export { normalizeBasePath, normalizeBasePathWithoutTrailingSlash, } from './utils/normalize-base-path';
51
+ export { registerSnapDomProxyMiddleware } from './utils/snapdom-proxy';
52
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAA4B,KAAK,UAAU,EAAsB,MAAM,MAAM,CAAC;AAkFrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,SAAS,GAAE,UAAe,GAAG,UAAU,CAoPnE;AAGD,eAAe,YAAY,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,iBAAiB,EACjB,qCAAqC,GACtC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,8BAA8B,EAAE,MAAM,uBAAuB,CAAC"}
package/lib/index.js ADDED
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.registerSnapDomProxyMiddleware = exports.normalizeBasePathWithoutTrailingSlash = exports.normalizeBasePath = exports.devLogsPlugin = exports.slardarPlugin = exports.viteClientPatchPlugin = exports.polyfillPlugin = exports.fontsMirrorPlugin = exports.ogMetaPlugin = exports.moduleAliasPlugin = exports.viewContextPlugin = exports.healthMiddlewarePlugin = exports.wsWatchdogPlugin = exports.hmrTimingPlugin = exports.errorOverlayPlugin = exports.capabilitiesBundlePlugin = exports.staticAssetsPlugin = exports.minifyHtmlWithHbsProtection = exports.htmlMinifyPlugin = exports.parseRoutes = exports.routesPlugin = void 0;
40
+ exports.defineConfig = defineConfig;
41
+ const fs = __importStar(require("node:fs"));
42
+ const path = __importStar(require("node:path"));
43
+ const vite_1 = require("vite");
44
+ const plugin_react_1 = __importDefault(require("@vitejs/plugin-react"));
45
+ const vite_2 = __importDefault(require("@tailwindcss/vite"));
46
+ const routes_1 = require("./plugins/routes");
47
+ const html_minify_1 = require("./plugins/html-minify");
48
+ const static_assets_1 = require("./plugins/static-assets");
49
+ const capabilities_1 = require("./plugins/capabilities");
50
+ const error_overlay_1 = require("./plugins/error-overlay");
51
+ const hmr_timing_1 = require("./plugins/hmr-timing");
52
+ const ws_watchdog_1 = require("./plugins/ws-watchdog");
53
+ const health_1 = require("./plugins/health");
54
+ const view_context_1 = require("./plugins/view-context");
55
+ const module_alias_1 = require("./plugins/module-alias");
56
+ const og_meta_1 = require("./plugins/og-meta");
57
+ const fonts_mirror_1 = require("./plugins/fonts-mirror");
58
+ const polyfill_1 = require("./plugins/polyfill");
59
+ const vite_client_patch_1 = require("./plugins/vite-client-patch");
60
+ const slardar_1 = require("./plugins/slardar");
61
+ const dev_logs_1 = require("./plugins/dev-logs");
62
+ const normalize_base_path_1 = require("./utils/normalize-base-path");
63
+ const snapdom_proxy_1 = require("./utils/snapdom-proxy");
64
+ /**
65
+ * 兼容两种模板 layout 的路径解析:
66
+ * - 老 fullstack 模板:`client/X` 存在
67
+ * - 新 jsPage 模板:`X` 在项目根(无 client/ 包装)
68
+ */
69
+ function resolveClientPath(rootDir, rel) {
70
+ const legacy = path.resolve(rootDir, 'client', rel);
71
+ if (fs.existsSync(legacy))
72
+ return legacy;
73
+ return path.resolve(rootDir, rel);
74
+ }
75
+ function readAppFlags(rootDir) {
76
+ try {
77
+ const pkg = JSON.parse(fs.readFileSync(path.resolve(rootDir, 'package.json'), 'utf-8'));
78
+ return pkg.flags || {};
79
+ }
80
+ catch {
81
+ return {};
82
+ }
83
+ }
84
+ /**
85
+ * 读 dist/{page,api}-routes.json(build.sh 在 vite build 前生成,jsPage 不产)。
86
+ * 即使文件不存在也安全注入空数组 define,避免业务代码引用时报 undefined。
87
+ */
88
+ function readRouteDefinitions(rootDir) {
89
+ let pageRoutes = [];
90
+ let apiRoutes = [];
91
+ try {
92
+ const p = path.resolve(rootDir, 'dist/page-routes.json');
93
+ if (fs.existsSync(p))
94
+ pageRoutes = JSON.parse(fs.readFileSync(p, 'utf-8'));
95
+ }
96
+ catch {
97
+ /* ignore */
98
+ }
99
+ try {
100
+ const p = path.resolve(rootDir, 'dist/api-routes.json');
101
+ if (fs.existsSync(p))
102
+ apiRoutes = JSON.parse(fs.readFileSync(p, 'utf-8'));
103
+ }
104
+ catch {
105
+ /* ignore */
106
+ }
107
+ return { pageRoutes, apiRoutes };
108
+ }
109
+ /**
110
+ * 动态加载 inspector(dev 默认开,`DISABLE_INSPECTOR=true` 可关)。
111
+ */
112
+ function tryLoadInspector(enabled) {
113
+ if (!enabled)
114
+ return [];
115
+ try {
116
+ const mod = require('@lark-apaas/vite-inspector-plugin');
117
+ return [mod.inspectorPlugin()];
118
+ }
119
+ catch {
120
+ return [];
121
+ }
122
+ }
123
+ /**
124
+ * miaoda-coding vite-react (jsPage) 默认 Vite 配置。
125
+ *
126
+ * 通过环境变量自动读取部署相关参数,用户只需提供项目特有的覆盖:
127
+ *
128
+ * ```ts
129
+ * import { defineConfig } from '@lark-apaas/coding-preset-vite-react';
130
+ * import path from 'node:path';
131
+ *
132
+ * export default defineConfig({
133
+ * resolve: {
134
+ * alias: {
135
+ * '@': path.resolve(__dirname, 'src'),
136
+ * '@shared': path.resolve(__dirname, 'shared'),
137
+ * },
138
+ * },
139
+ * });
140
+ * ```
141
+ *
142
+ * 支持环境变量:
143
+ * - NODE_ENV development | production(默认 development)
144
+ * - CLIENT_BASE_PATH 部署侧 client base path(如 `/app/<id>`)
145
+ * - ASSETS_CDN_PATH 生产 JS/CSS CDN 前缀(可选)
146
+ * - CLIENT_DEV_PORT dev server 端口(默认 8080)
147
+ * - CLIENT_DEV_HOST dev server host(默认 localhost)
148
+ * - FORCE_FRAMEWORK_DOMAIN_MAIN 反向代理域名(启用 wss HMR + 设置 ACAO)
149
+ * - DISABLE_INSPECTOR `true` 关 inspector
150
+ * - MIAODA_FONTS_MIRROR_OFF `1` 关 Google Fonts 代理替换
151
+ * - MIAODA_APP_TYPE 妙搭应用类型(数字字符串,供 lite Safety 徽标判断)
152
+ */
153
+ function defineConfig(overrides = {}) {
154
+ const isDev = process.env.NODE_ENV !== 'production';
155
+ const rootDir = process.cwd();
156
+ const clientBasePath = (0, normalize_base_path_1.normalizeBasePath)(process.env.CLIENT_BASE_PATH);
157
+ // ASSETS_CDN_PATH 来自 miaoda-cli 注入的 MIAODA_RESOURCE_CDN_PREFIX,通常是完整 URL
158
+ // (`https://cdn.bytetos.com/...`)。必须用 URL-safe 的 normalize,不能强加 `/` 前缀
159
+ // —— 否则会变成 `/https://cdn.bytetos.com/...` 直接破掉 Vite 的 base 替换。
160
+ const assetsCdnPath = (0, normalize_base_path_1.normalizeBasePathWithoutTrailingSlash)(process.env.ASSETS_CDN_PATH);
161
+ // dev / prod base 来源不同:dev 完全用 clientBasePath,prod 优先 CDN
162
+ const publicPath = isDev ? clientBasePath : (assetsCdnPath || clientBasePath);
163
+ const base = publicPath ? `${publicPath}/` : '/';
164
+ // 从 clientBasePath 提取 appId 给 viewContext 用
165
+ const isNewPathFormat = /^\/app\/[^/]/.test(clientBasePath);
166
+ const appId = isNewPathFormat
167
+ ? clientBasePath.replace(/\/+$/, '').split('/').pop()
168
+ : undefined;
169
+ const appFlags = readAppFlags(rootDir);
170
+ const { pageRoutes, apiRoutes } = readRouteDefinitions(rootDir);
171
+ const enableInspector = isDev && process.env.DISABLE_INSPECTOR !== 'true';
172
+ const baseConfig = {
173
+ root: rootDir,
174
+ base,
175
+ plugins: [
176
+ // dev only: HMR 重连不刷页面(沙箱链路下避免 ~18s 死连接超时)
177
+ isDev && (0, vite_client_patch_1.viteClientPatchPlugin)(),
178
+ // virtual:capabilities —— client-toolkit-lite / client-capability SDK 强依赖;
179
+ // 即便业务工程没有 capability JSON 也要把虚拟模块注册成空 map,否则 build fail
180
+ (0, capabilities_1.capabilitiesBundlePlugin)(),
181
+ // dev only: 自定义 HMR 错误浮层(替 Vite 原生)
182
+ isDev && (0, error_overlay_1.errorOverlayPlugin)({ clientBasePath }),
183
+ // @shared/static/* 路径解析 —— enforce: 'pre',早于 tsconfig paths 和 vite:json
184
+ (0, static_assets_1.staticAssetsPlugin)({ clientBasePath, rootDir }),
185
+ // inspector 必须排在 react() 之前 —— 两者都 enforce:'pre',inspector 需要原 JSX
186
+ // 还在的时候打 data-* 标记;react 转译完就剩 _jsxDEV() 调用了
187
+ ...tryLoadInspector(enableInspector),
188
+ (0, plugin_react_1.default)(),
189
+ (0, vite_2.default)(),
190
+ // clsx / echarts / echarts-for-react alias —— 让所有 echarts 子路径指向 preset 自带版本
191
+ (0, module_alias_1.moduleAliasPlugin)(),
192
+ // routes.json(dev 内存 + middleware;build emitFile)
193
+ (0, routes_1.routesPlugin)({
194
+ appPath: fs.existsSync(path.resolve(rootDir, 'client/src/app.tsx'))
195
+ ? './client/src/app.tsx'
196
+ : './src/app.tsx',
197
+ serveBasePath: clientBasePath,
198
+ // dev 显式空 base —— 沙箱网关把 prefix 剥掉了,直接 / 访问
199
+ ...(isDev ? { basePath: '' } : {}),
200
+ }),
201
+ // OG Meta tags + title + favicon 注入 HBS 占位符({{appName}} / {{appAvatar}} 等)
202
+ // 由部署运行时(vefaas)调 platform API 拿 appInfo 后做 hbs replace;
203
+ // dev 预览看到的是字面占位符,业务侧用 useAppInfo + useEffect setTitle 兜底
204
+ (0, og_meta_1.ogMetaPlugin)(),
205
+ // head 顺序敏感:slardar 必须排在 viewContext **之前**——
206
+ // Vite 同 bucket(head-prepend)是"后执行者插更前"。
207
+ // 数组里 slardar 在前 → HTML 里 viewContext 在 slardar 之上 → onload 时拿得到 window.tenantId
208
+ (0, slardar_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
209
+ (0, view_context_1.viewContextPlugin)({ appId: isDev ? appId : undefined }),
210
+ // prod only: 老浏览器 polyfill(按需加载)
211
+ !isDev && (0, polyfill_1.polyfillPlugin)(),
212
+ // build-time HTML minify(HBS 占位符保护)
213
+ (0, html_minify_1.htmlMinifyPlugin)(),
214
+ // dev only DX 插件
215
+ isDev && (0, hmr_timing_1.hmrTimingPlugin)(),
216
+ isDev && (0, ws_watchdog_1.wsWatchdogPlugin)({ clientBasePath }),
217
+ isDev && (0, health_1.healthMiddlewarePlugin)(),
218
+ // 客户端日志收集 endpoint(POST /dev/logs/collect{,-batch})
219
+ isDev && (0, dev_logs_1.devLogsPlugin)({ basePath: clientBasePath }),
220
+ // Google Fonts → 妙搭字体代理(编译时字符串 replace;dev / build 都有用)
221
+ (0, fonts_mirror_1.fontsMirrorPlugin)(),
222
+ ].filter(Boolean),
223
+ resolve: {
224
+ // Vite 8 原生 tsconfig paths 解析
225
+ // @ts-expect-error Vite 8 option — type defs may lag behind runtime support
226
+ tsconfigPaths: true,
227
+ // 跟 rspack-preset 对齐的 mainFields 顺序
228
+ mainFields: ['module', 'browser', 'main'],
229
+ extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'],
230
+ alias: {
231
+ // 所有 echarts 子路径解析到 preset 自带的 echarts,避免第三方扩展(如
232
+ // echarts-wordcloud)拉独立 echarts 副本导致注册不到同一实例
233
+ echarts: path.dirname(require.resolve('echarts/package.json')),
234
+ // Inspector dev-only CSS:dev 走 inspector 运行时注入,build 给空 stub
235
+ '@/inspector.dev.css': path.resolve(__dirname, '../src/empty.css'),
236
+ // prod:inspector 整包替成空 stub,避免进生产 bundle
237
+ ...(!isDev
238
+ ? {
239
+ '@lark-apaas/miaoda-inspector': path.resolve(__dirname, '../src/inspector-stub.js'),
240
+ }
241
+ : {}),
242
+ },
243
+ },
244
+ define: {
245
+ // Node global polyfill(sockjs-client 等老库要)
246
+ global: 'globalThis',
247
+ 'process.env.NODE_ENV': JSON.stringify(isDev ? 'development' : 'production'),
248
+ 'process.env.runtimeMode': JSON.stringify('fullstack'),
249
+ 'process.env.CLIENT_BASE_PATH': JSON.stringify(clientBasePath),
250
+ __APP_BASE_PATH__: JSON.stringify(clientBasePath),
251
+ // 未设置时替换为字面量 `undefined`,让 `??` fallback 正确触发(`""`/`undefined` 行为不同)
252
+ 'process.env.FORCE_FRAMEWORK_DOMAIN_MAIN': process.env.FORCE_FRAMEWORK_DOMAIN_MAIN
253
+ ? JSON.stringify(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN)
254
+ : 'undefined',
255
+ 'process.env.CWD': JSON.stringify(''),
256
+ 'process.env.__RUNTIME_INJECTED__': JSON.stringify('true'),
257
+ 'process.env.BUILD_TOOL': JSON.stringify('vite'),
258
+ 'process.env.APP_FLAGS': JSON.stringify(appFlags),
259
+ // 路由定义(jsPage 用空数组,业务代码引用时不至于 undefined)
260
+ 'process.env.__PAGE_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(pageRoutes)),
261
+ 'process.env.__API_ROUTE_DEFINITIONS__': JSON.stringify(JSON.stringify(apiRoutes)),
262
+ 'process.env.MIAODA_APP_TYPE': process.env.MIAODA_APP_TYPE
263
+ ? JSON.stringify(process.env.MIAODA_APP_TYPE)
264
+ : 'undefined',
265
+ },
266
+ server: {
267
+ port: Number(process.env.CLIENT_DEV_PORT) || 8080,
268
+ host: process.env.CLIENT_DEV_HOST || 'localhost',
269
+ strictPort: true,
270
+ cors: true,
271
+ allowedHosts: true,
272
+ headers: {
273
+ ...(process.env.FORCE_FRAMEWORK_DOMAIN_MAIN
274
+ ? { 'Access-Control-Allow-Origin': process.env.FORCE_FRAMEWORK_DOMAIN_MAIN }
275
+ : {}),
276
+ },
277
+ watch: {
278
+ usePolling: true,
279
+ interval: 500,
280
+ ignored: ['**/node_modules/**', '**/dist/**'],
281
+ },
282
+ hmr: process.env.FORCE_FRAMEWORK_DOMAIN_MAIN
283
+ ? { protocol: 'wss', path: '/ws' }
284
+ : { path: '/ws' },
285
+ },
286
+ build: {
287
+ outDir: path.resolve(rootDir, 'dist/client'),
288
+ // build.sh 已经在 vite build 前 `rm -rf dist`,这里不再让 vite 自己清
289
+ emptyOutDir: false,
290
+ sourcemap: isDev ? true : 'hidden',
291
+ minify: !isDev,
292
+ cssTarget: ['ios12', 'safari12', 'chrome80'],
293
+ rollupOptions: {
294
+ input: resolveClientPath(rootDir, 'index.html'),
295
+ output: {
296
+ // 按依赖拆 chunk,优化缓存和并行加载
297
+ manualChunks(id) {
298
+ if (id.includes('@lark-apaas/client-toolkit-lite'))
299
+ return 'toolkit';
300
+ if (id.includes('@radix-ui'))
301
+ return 'radix';
302
+ if (id.includes('@data-loom'))
303
+ return 'dataloom';
304
+ return undefined;
305
+ },
306
+ },
307
+ },
308
+ copyPublicDir: true,
309
+ },
310
+ publicDir: resolveClientPath(rootDir, 'public'),
311
+ optimizeDeps: {
312
+ include: [
313
+ 'react',
314
+ 'react-dom',
315
+ 'react/jsx-runtime',
316
+ 'react/jsx-dev-runtime',
317
+ 'clsx',
318
+ 'echarts',
319
+ 'echarts-for-react',
320
+ ...(enableInspector ? ['@lark-apaas/miaoda-inspector'] : []),
321
+ ],
322
+ },
323
+ };
324
+ // dev 期补三组 middleware:base-path internal rewrite、SnapDom proxy、devtool-kits 日志相关
325
+ if (isDev) {
326
+ baseConfig.plugins.push({
327
+ name: 'miaoda-dev-middlewares',
328
+ async configureServer(server) {
329
+ // ── base-path normalize ──────────────────────────────────────────
330
+ // Vite 8 baseMiddleware:请求 pathname 不以 base(含末尾 /)开头时显示警告页,
331
+ // 不再自动 301。沙箱预览过来的 URL 通常是 `/app/app_xxx?sso_token=...`(pathname
332
+ // 没末尾 /),会被警告页拦下。
333
+ //
334
+ // 用 internal rewrite(不是 301)—— 浏览器跳 → 沙箱网关在转发"带尾 /"时会把
335
+ // 尾 / 又 strip 回去 → vite 又 301 → ERR_TOO_MANY_REDIRECTS。
336
+ // 必须 unshift 到 stack 开头才能早于 baseMiddleware 执行。
337
+ const baseWithSlash = clientBasePath.endsWith('/')
338
+ ? clientBasePath
339
+ : clientBasePath + '/';
340
+ const baseWithoutSlash = baseWithSlash.slice(0, -1);
341
+ if (baseWithoutSlash) {
342
+ const stack = server.middlewares.stack;
343
+ if (Array.isArray(stack)) {
344
+ stack.unshift({
345
+ route: '',
346
+ handle: (req, _res, next) => {
347
+ const url = req.url || '';
348
+ const qIdx = url.indexOf('?');
349
+ const pathname = qIdx >= 0 ? url.slice(0, qIdx) : url;
350
+ const search = qIdx >= 0 ? url.slice(qIdx) : '';
351
+ if (pathname === baseWithoutSlash) {
352
+ req.url = baseWithoutSlash + '/' + search;
353
+ }
354
+ next();
355
+ },
356
+ });
357
+ }
358
+ }
359
+ // SnapDom proxy(client 截图库的跨域转发)
360
+ (0, snapdom_proxy_1.registerSnapDomProxyMiddleware)(server.middlewares, { baseUrl: clientBasePath });
361
+ // 注:客户端日志收集 endpoint 现在由 devLogsPlugin 自己挂载(plugin 数组里),
362
+ // 这里不再做集中注册——以前依赖 @lark-apaas/devtool-kits 已彻底去除
363
+ },
364
+ });
365
+ }
366
+ return (0, vite_1.mergeConfig)(baseConfig, overrides);
367
+ }
368
+ // 默认导出与命名导出同名
369
+ exports.default = defineConfig;
370
+ // 子模块导出
371
+ var routes_2 = require("./plugins/routes");
372
+ Object.defineProperty(exports, "routesPlugin", { enumerable: true, get: function () { return routes_2.routesPlugin; } });
373
+ Object.defineProperty(exports, "parseRoutes", { enumerable: true, get: function () { return routes_2.parseRoutes; } });
374
+ var html_minify_2 = require("./plugins/html-minify");
375
+ Object.defineProperty(exports, "htmlMinifyPlugin", { enumerable: true, get: function () { return html_minify_2.htmlMinifyPlugin; } });
376
+ Object.defineProperty(exports, "minifyHtmlWithHbsProtection", { enumerable: true, get: function () { return html_minify_2.minifyHtmlWithHbsProtection; } });
377
+ var static_assets_2 = require("./plugins/static-assets");
378
+ Object.defineProperty(exports, "staticAssetsPlugin", { enumerable: true, get: function () { return static_assets_2.staticAssetsPlugin; } });
379
+ var capabilities_2 = require("./plugins/capabilities");
380
+ Object.defineProperty(exports, "capabilitiesBundlePlugin", { enumerable: true, get: function () { return capabilities_2.capabilitiesBundlePlugin; } });
381
+ var error_overlay_2 = require("./plugins/error-overlay");
382
+ Object.defineProperty(exports, "errorOverlayPlugin", { enumerable: true, get: function () { return error_overlay_2.errorOverlayPlugin; } });
383
+ var hmr_timing_2 = require("./plugins/hmr-timing");
384
+ Object.defineProperty(exports, "hmrTimingPlugin", { enumerable: true, get: function () { return hmr_timing_2.hmrTimingPlugin; } });
385
+ var ws_watchdog_2 = require("./plugins/ws-watchdog");
386
+ Object.defineProperty(exports, "wsWatchdogPlugin", { enumerable: true, get: function () { return ws_watchdog_2.wsWatchdogPlugin; } });
387
+ var health_2 = require("./plugins/health");
388
+ Object.defineProperty(exports, "healthMiddlewarePlugin", { enumerable: true, get: function () { return health_2.healthMiddlewarePlugin; } });
389
+ var view_context_2 = require("./plugins/view-context");
390
+ Object.defineProperty(exports, "viewContextPlugin", { enumerable: true, get: function () { return view_context_2.viewContextPlugin; } });
391
+ var module_alias_2 = require("./plugins/module-alias");
392
+ Object.defineProperty(exports, "moduleAliasPlugin", { enumerable: true, get: function () { return module_alias_2.moduleAliasPlugin; } });
393
+ var og_meta_2 = require("./plugins/og-meta");
394
+ Object.defineProperty(exports, "ogMetaPlugin", { enumerable: true, get: function () { return og_meta_2.ogMetaPlugin; } });
395
+ var fonts_mirror_2 = require("./plugins/fonts-mirror");
396
+ Object.defineProperty(exports, "fontsMirrorPlugin", { enumerable: true, get: function () { return fonts_mirror_2.fontsMirrorPlugin; } });
397
+ var polyfill_2 = require("./plugins/polyfill");
398
+ Object.defineProperty(exports, "polyfillPlugin", { enumerable: true, get: function () { return polyfill_2.polyfillPlugin; } });
399
+ var vite_client_patch_2 = require("./plugins/vite-client-patch");
400
+ Object.defineProperty(exports, "viteClientPatchPlugin", { enumerable: true, get: function () { return vite_client_patch_2.viteClientPatchPlugin; } });
401
+ var slardar_2 = require("./plugins/slardar");
402
+ Object.defineProperty(exports, "slardarPlugin", { enumerable: true, get: function () { return slardar_2.slardarPlugin; } });
403
+ var dev_logs_2 = require("./plugins/dev-logs");
404
+ Object.defineProperty(exports, "devLogsPlugin", { enumerable: true, get: function () { return dev_logs_2.devLogsPlugin; } });
405
+ var normalize_base_path_2 = require("./utils/normalize-base-path");
406
+ Object.defineProperty(exports, "normalizeBasePath", { enumerable: true, get: function () { return normalize_base_path_2.normalizeBasePath; } });
407
+ Object.defineProperty(exports, "normalizeBasePathWithoutTrailingSlash", { enumerable: true, get: function () { return normalize_base_path_2.normalizeBasePathWithoutTrailingSlash; } });
408
+ var snapdom_proxy_2 = require("./utils/snapdom-proxy");
409
+ Object.defineProperty(exports, "registerSnapDomProxyMiddleware", { enumerable: true, get: function () { return snapdom_proxy_2.registerSnapDomProxyMiddleware; } });
410
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Plugin } from 'vite';
2
+ export interface CapabilitiesBundlePluginOptions {
3
+ /** 覆盖扫描目录(相对项目根)。不传时按默认目录列表依次扫描。 */
4
+ dir?: string;
5
+ }
6
+ /**
7
+ * 把业务工程 `<dir>/*.json` 的 capability 配置打成 `virtual:capabilities` 虚拟模块。
8
+ *
9
+ * `@lark-apaas/client-capability` SDK(被 client-toolkit-lite 内联使用)会
10
+ * `import map from 'virtual:capabilities'` 取这个 map。SDK 在 dev 预览 / 沙箱
11
+ * 加载流程中依赖这个模块存在,所以即使 capabilities 目录为空,也必须把模块
12
+ * 注册成解析成功(空 map),否则 rolldown 在 build 时直接 fail。
13
+ *
14
+ * 同时通过 `optimizeDeps.esbuildOptions.plugins` 在 depOptimizer 那条路径上
15
+ * 也提供解析——因为 client-toolkit-lite 是 pre-bundle 进来的,pre-bundle 的
16
+ * esbuild 不会经过 Vite 主 pipeline 的 plugin 链。
17
+ *
18
+ * V1 限制:dev 期更改 capability JSON 后,pre-bundle 产物里的 map 是启动时快照,
19
+ * 不会自动刷新;新增 / 修改 capability 后需要重启 dev server。
20
+ */
21
+ export declare function capabilitiesBundlePlugin(options?: CapabilitiesBundlePluginOptions): Plugin;
22
+ export default capabilitiesBundlePlugin;
23
+ //# sourceMappingURL=capabilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/plugins/capabilities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAQnC,MAAM,WAAW,+BAA+B;IAC9C,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,GAAE,+BAAoC,GAAG,MAAM,CA0F9F;AAED,eAAe,wBAAwB,CAAC"}