@lark-apaas/fullstack-vite-preset 1.0.2-alpha.3 → 1.0.2-alpha.30
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/module-alias/echarts-for-react.d.ts +10 -1
- package/lib/module-alias/echarts-for-react.d.ts.map +1 -1
- package/lib/module-alias/echarts-for-react.js +6 -4
- package/lib/module-alias/echarts-for-react.js.map +1 -1
- package/lib/module-alias/echarts.d.ts.map +1 -1
- package/lib/module-alias/echarts.js +1 -2
- package/lib/module-alias/echarts.js.map +1 -1
- package/lib/preset.d.ts.map +1 -1
- package/lib/preset.js +15 -11
- package/lib/preset.js.map +1 -1
- package/lib/vite-plugins/html-output-plugin.d.ts +7 -0
- package/lib/vite-plugins/html-output-plugin.d.ts.map +1 -1
- package/lib/vite-plugins/html-output-plugin.js +49 -7
- package/lib/vite-plugins/html-output-plugin.js.map +1 -1
- package/lib/vite-plugins/route-parser-plugin.d.ts +3 -1
- package/lib/vite-plugins/route-parser-plugin.d.ts.map +1 -1
- package/lib/vite-plugins/route-parser-plugin.js +47 -18
- package/lib/vite-plugins/route-parser-plugin.js.map +1 -1
- package/lib/vite-plugins/static-assets-plugin.d.ts +27 -0
- package/lib/vite-plugins/static-assets-plugin.d.ts.map +1 -0
- package/lib/vite-plugins/static-assets-plugin.js +344 -0
- package/lib/vite-plugins/static-assets-plugin.js.map +1 -0
- package/package.json +5 -4
- package/src/module-alias/echarts-for-react.mjs +2 -2
- package/lib/vite-plugins/inspector-css-plugin.d.ts +0 -19
- package/lib/vite-plugins/inspector-css-plugin.d.ts.map +0 -1
- package/lib/vite-plugins/inspector-css-plugin.js +0 -70
- package/lib/vite-plugins/inspector-css-plugin.js.map +0 -1
|
@@ -1,11 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import OriginalReactECharts from 'echarts-for-react';
|
|
2
3
|
import type { EChartsReactProps } from 'echarts-for-react';
|
|
4
|
+
/**
|
|
5
|
+
* Convert HSL/HSLA color to hex or rgba
|
|
6
|
+
*/
|
|
7
|
+
export declare function convertColorToHex(color: string): string;
|
|
8
|
+
/**
|
|
9
|
+
* Deep traverse object to transform all HSL colors in 'color' property
|
|
10
|
+
*/
|
|
11
|
+
export declare function transformColors<T>(value: T, visited?: WeakSet<object>): T;
|
|
3
12
|
/**
|
|
4
13
|
* EChartsReact wrapper component
|
|
5
14
|
* - Automatically converts HSL colors to hex in option
|
|
6
15
|
*/
|
|
7
16
|
export declare class EChartsReact extends React.Component<EChartsReactProps> {
|
|
8
|
-
render(): React.CElement<
|
|
17
|
+
render(): React.CElement<EChartsReactProps, OriginalReactECharts>;
|
|
9
18
|
}
|
|
10
19
|
export * from 'echarts-for-react';
|
|
11
20
|
export default EChartsReact;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echarts-for-react.d.ts","sourceRoot":"","sources":["../../src/module-alias/echarts-for-react.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"echarts-for-react.d.ts","sourceRoot":"","sources":["../../src/module-alias/echarts-for-react.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,oBAAoB,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAG3D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAoBvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,kBAAwB,GAAG,CAAC,CAqC/E;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK,CAAC,SAAS,CAAC,iBAAiB,CAAC;IAClE,MAAM;CASP;AAED,cAAc,mBAAmB,CAAC;AAClC,eAAe,YAAY,CAAC"}
|
|
@@ -18,7 +18,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
20
|
exports.EChartsReact = void 0;
|
|
21
|
-
|
|
21
|
+
exports.convertColorToHex = convertColorToHex;
|
|
22
|
+
exports.transformColors = transformColors;
|
|
22
23
|
const react_1 = __importDefault(require("react"));
|
|
23
24
|
const echarts_for_react_1 = __importDefault(require("echarts-for-react"));
|
|
24
25
|
const colorjs_io_1 = __importDefault(require("colorjs.io"));
|
|
@@ -64,11 +65,12 @@ function transformColors(value, visited = new WeakSet()) {
|
|
|
64
65
|
if (Array.isArray(value)) {
|
|
65
66
|
return value.map((item) => transformColors(item, visited));
|
|
66
67
|
}
|
|
68
|
+
const obj = value;
|
|
67
69
|
const result = {};
|
|
68
|
-
for (const key in
|
|
69
|
-
if (!Object.prototype.hasOwnProperty.call(
|
|
70
|
+
for (const key in obj) {
|
|
71
|
+
if (!Object.prototype.hasOwnProperty.call(obj, key))
|
|
70
72
|
continue;
|
|
71
|
-
const propValue =
|
|
73
|
+
const propValue = obj[key];
|
|
72
74
|
if (key === 'color') {
|
|
73
75
|
if (typeof propValue === 'string') {
|
|
74
76
|
result[key] = convertColorToHex(propValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echarts-for-react.js","sourceRoot":"","sources":["../../src/module-alias/echarts-for-react.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"echarts-for-react.js","sourceRoot":"","sources":["../../src/module-alias/echarts-for-react.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echarts.d.ts","sourceRoot":"","sources":["../../src/module-alias/echarts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,gBAAgB,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC;AACvC,cAAc,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"echarts.d.ts","sourceRoot":"","sources":["../../src/module-alias/echarts.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,gBAAgB,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,CAAC;AACvC,cAAc,SAAS,CAAC;AAOxB;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAM9C;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAqB5C"}
|
|
@@ -44,7 +44,6 @@ exports.resgisterEchartsTheme = resgisterEchartsTheme;
|
|
|
44
44
|
const echartsNamespace = __importStar(require("echarts"));
|
|
45
45
|
exports.echarts = echartsNamespace;
|
|
46
46
|
__exportStar(require("echarts"), exports);
|
|
47
|
-
const echarts = __importStar(require("echarts"));
|
|
48
47
|
const echarts_1 = require("echarts");
|
|
49
48
|
const registry_echarts_theme_1 = require("./registry_echarts_theme");
|
|
50
49
|
let isRegistered = false;
|
|
@@ -57,7 +56,7 @@ function registerEchartsToWindow() {
|
|
|
57
56
|
return;
|
|
58
57
|
}
|
|
59
58
|
isWindowMounted = true;
|
|
60
|
-
globalThis.echarts =
|
|
59
|
+
globalThis.echarts = echartsNamespace;
|
|
61
60
|
}
|
|
62
61
|
function resgisterEchartsTheme() {
|
|
63
62
|
// Register ud theme, only register once globally
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echarts.js","sourceRoot":"","sources":["../../src/module-alias/echarts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"echarts.js","sourceRoot":"","sources":["../../src/module-alias/echarts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcA,0DAMC;AAED,sDAqBC;AA3CD,6DAA6D;AAC7D,gEAAgE;AAChE,0DAA4C;AACf,mCAAO;AACpC,0CAAwB;AACxB,qCAAwC;AACxC,qEAAiE;AAEjE,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,IAAI,eAAe,GAAG,KAAK,CAAC;AAE5B;;GAEG;AACH,SAAgB,uBAAuB;IACrC,IAAI,eAAe,IAAI,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAChE,OAAO;IACT,CAAC;IACD,eAAe,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,OAAO,GAAG,gBAAgB,CAAC;AACxC,CAAC;AAED,SAAgB,qBAAqB;IACnC,iDAAiD;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IACD,YAAY,GAAG,IAAI,CAAC;IACpB,6DAA6D;IAC7D,IAAA,uBAAa,EAAC,IAAI,EAAE,IAAA,8CAAqB,GAAE,CAAC,CAAC;IAE7C,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3C,wDAAwD;QACxD,4DAA4D;QAC5D,sDAAsD;QACtD,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpB,6DAA6D;YAC7D,mBAAmB;YACnB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,EAAE;gBAC1C,IAAA,uBAAa,EAAC,IAAI,EAAE,IAAA,8CAAqB,GAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,uBAAuB,EAAE,CAAC;AAC1B,qBAAqB,EAAE,CAAC"}
|
package/lib/preset.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"preset.d.ts","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAyB,MAAM,MAAM,CAAC;AA0C9D,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;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,gCAAgC,GACxC,UAAU,CAmWZ"}
|
package/lib/preset.js
CHANGED
|
@@ -17,6 +17,7 @@ const module_alias_plugin_1 = require("./vite-plugins/module-alias-plugin");
|
|
|
17
17
|
const html_output_plugin_1 = require("./vite-plugins/html-output-plugin");
|
|
18
18
|
const runtime_injection_plugin_1 = require("./vite-plugins/runtime-injection-plugin");
|
|
19
19
|
const error_overlay_plugin_1 = require("./vite-plugins/error-overlay-plugin");
|
|
20
|
+
const static_assets_plugin_1 = require("./vite-plugins/static-assets-plugin");
|
|
20
21
|
const snapdom_proxy_1 = require("./utils/snapdom-proxy");
|
|
21
22
|
const hmr_timing_1 = require("./utils/hmr-timing");
|
|
22
23
|
function sendBackendUnavailable502(_err, _req, res) {
|
|
@@ -43,8 +44,13 @@ function createRecommendViteConfig(options) {
|
|
|
43
44
|
// Must be first to intercept config and disable native overlay
|
|
44
45
|
// Only enabled in development mode
|
|
45
46
|
isDev && (0, error_overlay_plugin_1.errorOverlayPlugin)({ clientBasePath }),
|
|
47
|
+
// Static assets plugin - supports @shared/static/* imports
|
|
48
|
+
// Must be before tsconfigPaths() so resolveId intercepts @shared/static/*
|
|
49
|
+
// before tsconfig resolution. This is critical for JSON files: if tsconfigPaths
|
|
50
|
+
// resolves first, the module ID ends with .json and vite:json's transform
|
|
51
|
+
// will corrupt the virtual module content.
|
|
52
|
+
(0, static_assets_plugin_1.staticAssetsPlugin)({ clientBasePath, rootDir }),
|
|
46
53
|
// TSConfig paths plugin - auto-reads path aliases from tsconfig.json
|
|
47
|
-
// Must be first to resolve aliases before other plugins
|
|
48
54
|
(0, vite_tsconfig_paths_1.default)(),
|
|
49
55
|
// Runtime injection plugin - injects @lark-apaas/client-toolkit/runtime
|
|
50
56
|
// Must be early to ensure runtime is loaded before app code
|
|
@@ -52,10 +58,6 @@ function createRecommendViteConfig(options) {
|
|
|
52
58
|
// React plugin with Babel for styled-jsx support
|
|
53
59
|
(0, plugin_react_1.default)({
|
|
54
60
|
jsxRuntime: 'automatic',
|
|
55
|
-
// Only use inspector jsx-runtime in dev mode when inspector is enabled
|
|
56
|
-
jsxImportSource: enableInspector
|
|
57
|
-
? '@lark-apaas/miaoda-inspector-jsx-runtime'
|
|
58
|
-
: 'react',
|
|
59
61
|
babel: {
|
|
60
62
|
plugins: [['styled-jsx/babel']],
|
|
61
63
|
},
|
|
@@ -67,11 +69,15 @@ function createRecommendViteConfig(options) {
|
|
|
67
69
|
enableInspector && (0, vite_inspector_plugin_1.inspectorPlugin)(),
|
|
68
70
|
// Module alias plugin for clsx and echarts
|
|
69
71
|
(0, module_alias_plugin_1.moduleAliasPlugin)(),
|
|
70
|
-
// Route parser plugin (
|
|
72
|
+
// Route parser plugin (when needRoutes is true)
|
|
73
|
+
// Align with rspack: dev mode passes basePath: '', prod mode reads from CLIENT_BASE_PATH env
|
|
74
|
+
// serveBasePath is always clientBasePath (for middleware to serve routes.json at correct path)
|
|
71
75
|
needRoutes &&
|
|
72
76
|
(0, route_parser_plugin_1.routeParserPlugin)({
|
|
73
77
|
appPath: './client/src/app.tsx',
|
|
74
|
-
|
|
78
|
+
outputPath: path_1.default.resolve(rootDir, 'dist/client/routes.json'),
|
|
79
|
+
serveBasePath: clientBasePath,
|
|
80
|
+
...(isDev ? { basePath: '' } : {}),
|
|
75
81
|
}),
|
|
76
82
|
// Performance monitoring plugin (Slardar + Tea)
|
|
77
83
|
(0, slardar_plugin_1.slardarPlugin)({ bid: 'apaas_miaoda' }),
|
|
@@ -211,13 +217,11 @@ function createRecommendViteConfig(options) {
|
|
|
211
217
|
'react/jsx-dev-runtime',
|
|
212
218
|
'clsx',
|
|
213
219
|
'echarts',
|
|
220
|
+
'echarts-for-react',
|
|
214
221
|
// Include inspector so Vite pre-bundles it with its dependencies
|
|
215
222
|
...(enableInspector ? ['@lark-apaas/miaoda-inspector'] : []),
|
|
216
223
|
],
|
|
217
|
-
|
|
218
|
-
exclude: enableInspector
|
|
219
|
-
? ['@lark-apaas/miaoda-inspector-jsx-runtime']
|
|
220
|
-
: [],
|
|
224
|
+
exclude: [],
|
|
221
225
|
// Pass define replacements to esbuild for pre-bundling
|
|
222
226
|
// Without this, process.env.X in dependencies won't be replaced
|
|
223
227
|
esbuildOptions: {
|
package/lib/preset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"preset.js","sourceRoot":"","sources":["../src/preset.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import type { Plugin } from 'vite';
|
|
2
|
+
/**
|
|
3
|
+
* Minify HTML while preserving HBS (Handlebars) template expressions.
|
|
4
|
+
*
|
|
5
|
+
* HBS expressions like {{csrfToken}} and {{{appAvatar}}} are temporarily
|
|
6
|
+
* replaced with safe placeholders before minification, then restored after.
|
|
7
|
+
*/
|
|
8
|
+
export declare function minifyHtmlWithHbsProtection(html: string): Promise<string>;
|
|
2
9
|
export interface HtmlOutputPluginOptions {
|
|
3
10
|
/** Whether running in development mode */
|
|
4
11
|
isDev: boolean;
|
|
@@ -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;
|
|
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"}
|
|
@@ -3,9 +3,41 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.minifyHtmlWithHbsProtection = minifyHtmlWithHbsProtection;
|
|
6
7
|
exports.htmlOutputPlugin = htmlOutputPlugin;
|
|
7
8
|
const fs_1 = __importDefault(require("fs"));
|
|
8
9
|
const path_1 = __importDefault(require("path"));
|
|
10
|
+
const html_minifier_terser_1 = require("html-minifier-terser");
|
|
11
|
+
/**
|
|
12
|
+
* Minify HTML while preserving HBS (Handlebars) template expressions.
|
|
13
|
+
*
|
|
14
|
+
* HBS expressions like {{csrfToken}} and {{{appAvatar}}} are temporarily
|
|
15
|
+
* replaced with safe placeholders before minification, then restored after.
|
|
16
|
+
*/
|
|
17
|
+
async function minifyHtmlWithHbsProtection(html) {
|
|
18
|
+
// Replace HBS expressions with placeholders before minification
|
|
19
|
+
// to prevent html-minifier-terser from corrupting them
|
|
20
|
+
const hbsPlaceholders = [];
|
|
21
|
+
let processed = html.replace(/\{\{\{?.+?\}\}\}?/g, (match) => {
|
|
22
|
+
const index = hbsPlaceholders.length;
|
|
23
|
+
hbsPlaceholders.push(match);
|
|
24
|
+
return `__HBS_${index}__`;
|
|
25
|
+
});
|
|
26
|
+
processed = await (0, html_minifier_terser_1.minify)(processed, {
|
|
27
|
+
collapseWhitespace: true,
|
|
28
|
+
removeComments: true,
|
|
29
|
+
removeRedundantAttributes: true,
|
|
30
|
+
removeEmptyAttributes: true,
|
|
31
|
+
minifyCSS: true,
|
|
32
|
+
// Do NOT minifyJS — inline scripts may reference HBS placeholders
|
|
33
|
+
minifyJS: false,
|
|
34
|
+
});
|
|
35
|
+
// Restore HBS expressions
|
|
36
|
+
processed = processed.replace(/__HBS_(\d+)__/g, (_, index) => {
|
|
37
|
+
return hbsPlaceholders[Number(index)];
|
|
38
|
+
});
|
|
39
|
+
return processed;
|
|
40
|
+
}
|
|
9
41
|
/**
|
|
10
42
|
* Vite plugin to handle HTML output:
|
|
11
43
|
* 1. In production: fixes HTML output path (removes extra 'client' directory)
|
|
@@ -70,12 +102,10 @@ function htmlOutputPlugin(options) {
|
|
|
70
102
|
if (!isDev)
|
|
71
103
|
return;
|
|
72
104
|
server = devServer;
|
|
73
|
-
// Return a post hook to run after
|
|
105
|
+
// Return a post hook to run after all plugins' configureServer and
|
|
106
|
+
// Vite's internal middlewares are set up
|
|
74
107
|
return () => {
|
|
75
|
-
|
|
76
|
-
setTimeout(() => {
|
|
77
|
-
writeHtmlToDisk();
|
|
78
|
-
}, 100);
|
|
108
|
+
writeHtmlToDisk();
|
|
79
109
|
// Watch for HTML file changes
|
|
80
110
|
const rollupInput = config.build.rollupOptions?.input;
|
|
81
111
|
let htmlPath;
|
|
@@ -99,8 +129,8 @@ function htmlOutputPlugin(options) {
|
|
|
99
129
|
}
|
|
100
130
|
};
|
|
101
131
|
},
|
|
102
|
-
// In production, fix the HTML output path after build
|
|
103
|
-
closeBundle() {
|
|
132
|
+
// In production, fix the HTML output path and minify after build
|
|
133
|
+
async closeBundle() {
|
|
104
134
|
if (!isDev && config) {
|
|
105
135
|
const outDir = config.build.outDir;
|
|
106
136
|
const wrongPath = path_1.default.resolve(outDir, 'client/index.html');
|
|
@@ -122,6 +152,18 @@ function htmlOutputPlugin(options) {
|
|
|
122
152
|
// Directory doesn't exist or not empty, ignore
|
|
123
153
|
}
|
|
124
154
|
}
|
|
155
|
+
// Minify HTML (protect HBS templates like {{csrfToken}}, {{{appAvatar}}})
|
|
156
|
+
if (fs_1.default.existsSync(correctPath)) {
|
|
157
|
+
try {
|
|
158
|
+
const html = fs_1.default.readFileSync(correctPath, 'utf-8');
|
|
159
|
+
const minified = await minifyHtmlWithHbsProtection(html);
|
|
160
|
+
fs_1.default.writeFileSync(correctPath, minified);
|
|
161
|
+
console.log(`[html-output] Minified: ${correctPath}`);
|
|
162
|
+
}
|
|
163
|
+
catch (e) {
|
|
164
|
+
console.warn(`[html-output] HTML minification failed, skipping:`, e);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
125
167
|
}
|
|
126
168
|
},
|
|
127
169
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"html-output-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/html-output-plugin.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"html-output-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/html-output-plugin.ts"],"names":[],"mappings":";;;;;AAWA,kEA0BC;AAcD,4CAwIC;AA3LD,4CAAoB;AACpB,gDAAwB;AAExB,+DAA8C;AAE9C;;;;;GAKG;AACI,KAAK,UAAU,2BAA2B,CAAC,IAAY;IAC5D,gEAAgE;IAChE,uDAAuD;IACvD,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC,KAAK,EAAE,EAAE;QAC3D,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC;QACrC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,SAAS,KAAK,IAAI,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,SAAS,GAAG,MAAM,IAAA,6BAAM,EAAC,SAAS,EAAE;QAClC,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,IAAI;QACpB,yBAAyB,EAAE,IAAI;QAC/B,qBAAqB,EAAE,IAAI;QAC3B,SAAS,EAAE,IAAI;QACf,kEAAkE;QAClE,QAAQ,EAAE,KAAK;KAChB,CAAC,CAAC;IAEH,0BAA0B;IAC1B,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;QAC3D,OAAO,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,OAAO,SAAS,CAAC;AACnB,CAAC;AASD;;;;GAIG;AACH,SAAgB,gBAAgB,CAAC,OAAgC;IAC/D,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAClC,IAAI,MAAsB,CAAC;IAC3B,IAAI,MAAM,GAAyB,IAAI,CAAC;IAExC;;OAEG;IACH,KAAK,UAAU,eAAe;QAC5B,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;YAAE,OAAO;QAE/B,IAAI,CAAC;YACH,+CAA+C;YAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;YACtD,IAAI,QAAgB,CAAC;YAErB,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,QAAQ,GAAG,WAAW,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtC,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YAChE,CAAC;iBAAM,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;gBAC1D,QAAQ;oBACN,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;YACrD,CAAC;YAED,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YAED,uBAAuB;YACvB,IAAI,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAE9C,uFAAuF;YACvF,MAAM,GAAG,GAAG,GAAG,GAAG,cAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvD,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAElD,4BAA4B;YAC5B,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAEtD,iCAAiC;YACjC,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACrC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,YAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,CAAC,GAAG,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,qCAAqC,EAAE,CAAC,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,kBAAkB;QAExB,cAAc,CAAC,cAAc;YAC3B,MAAM,GAAG,cAAc,CAAC;QAC1B,CAAC;QAED,eAAe,CAAC,SAAS;YACvB,IAAI,CAAC,KAAK;gBAAE,OAAO;YAEnB,MAAM,GAAG,SAAS,CAAC;YAEnB,mEAAmE;YACnE,yCAAyC;YACzC,OAAO,GAAG,EAAE;gBACV,eAAe,EAAE,CAAC;gBAElB,8BAA8B;gBAC9B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC;gBACtD,IAAI,QAA4B,CAAC;gBAEjC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrE,QAAQ,GAAG,WAAW,CAAC;gBACzB,CAAC;qBAAM,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;oBAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;wBACvC,CAAC,CAAC,WAAW;wBACb,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;oBAC/B,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrD,CAAC;gBAED,IAAI,QAAQ,EAAE,CAAC;oBACb,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBAChC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;wBACtC,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;4BACtB,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;4BAC3D,eAAe,EAAE,CAAC;wBACpB,CAAC;oBACH,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAED,iEAAiE;QACjE,KAAK,CAAC,WAAW;YACf,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;gBACnC,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBAC5D,MAAM,WAAW,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAEvD,6CAA6C;gBAC7C,IAAI,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,gCAAgC;oBAChC,YAAE,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,SAAS,OAAO,WAAW,EAAE,CAAC,CAAC;oBAEnE,6CAA6C;oBAC7C,MAAM,SAAS,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACjD,IAAI,CAAC;wBACH,MAAM,KAAK,GAAG,YAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;4BACvB,YAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBAC1B,CAAC;oBACH,CAAC;oBAAC,MAAM,CAAC;wBACP,+CAA+C;oBACjD,CAAC;gBACH,CAAC;gBAED,0EAA0E;gBAC1E,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;wBACnD,MAAM,QAAQ,GAAG,MAAM,2BAA2B,CAAC,IAAI,CAAC,CAAC;wBACzD,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;wBACxC,OAAO,CAAC,GAAG,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;oBACxD,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,IAAI,CAAC,mDAAmD,EAAE,CAAC,CAAC,CAAC;oBACvE,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -2,8 +2,10 @@ import type { Plugin } from 'vite';
|
|
|
2
2
|
interface RouteParserPluginOptions {
|
|
3
3
|
appPath?: string;
|
|
4
4
|
outputPath?: string;
|
|
5
|
-
/** Base path for the routes
|
|
5
|
+
/** Base path for the routes content (e.g., '/miaoda_custom_plugin'). If not provided, reads from CLIENT_BASE_PATH env */
|
|
6
6
|
basePath?: string;
|
|
7
|
+
/** Base path for serving routes.json in dev mode (e.g., '/miaoda_custom_plugin'). Defaults to CLIENT_BASE_PATH env */
|
|
8
|
+
serveBasePath?: string;
|
|
7
9
|
}
|
|
8
10
|
export declare function routeParserPlugin(options?: RouteParserPluginOptions): Plugin;
|
|
9
11
|
export default routeParserPlugin;
|
|
@@ -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,
|
|
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"}
|
|
@@ -43,6 +43,22 @@ const crypto = __importStar(require("crypto"));
|
|
|
43
43
|
const parser_1 = require("@babel/parser");
|
|
44
44
|
const traverse_1 = __importDefault(require("@babel/traverse"));
|
|
45
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
|
+
}
|
|
46
62
|
function log(level, message, ...args) {
|
|
47
63
|
const prefix = '[route-parser]';
|
|
48
64
|
const logMessage = `${prefix} ${message}`;
|
|
@@ -151,7 +167,7 @@ function buildFullPath(routeStack, currentRoute) {
|
|
|
151
167
|
}
|
|
152
168
|
return null;
|
|
153
169
|
}
|
|
154
|
-
function parseRoutes(appPath) {
|
|
170
|
+
function parseRoutes(appPath, basePath) {
|
|
155
171
|
try {
|
|
156
172
|
const appFilePath = path.resolve(process.cwd(), appPath);
|
|
157
173
|
if (!fs.existsSync(appFilePath)) {
|
|
@@ -202,21 +218,26 @@ function parseRoutes(appPath) {
|
|
|
202
218
|
},
|
|
203
219
|
},
|
|
204
220
|
});
|
|
221
|
+
// Apply basePath to all routes (align with rspack behavior)
|
|
205
222
|
const routes = Array.from(routeSet).map((routePath) => ({
|
|
206
|
-
path: routePath,
|
|
223
|
+
path: basePath ? `${basePath}${routePath}` : routePath,
|
|
207
224
|
}));
|
|
208
|
-
|
|
225
|
+
// Default route also needs basePath
|
|
226
|
+
const defaultPath = basePath ? `${basePath}/` : '/';
|
|
227
|
+
return routes.length > 0 ? routes : [{ path: defaultPath }];
|
|
209
228
|
}
|
|
210
229
|
catch (error) {
|
|
211
230
|
log('warn', 'Route parsing failed, using default routes:', error.message);
|
|
212
|
-
|
|
231
|
+
const defaultPath = basePath ? `${basePath}/` : '/';
|
|
232
|
+
return [{ path: defaultPath }];
|
|
213
233
|
}
|
|
214
234
|
}
|
|
215
|
-
function generateRoutes(appPath, outputPath, lastHash, cachedRoutes) {
|
|
235
|
+
function generateRoutes(appPath, outputPath, basePath, lastHash, cachedRoutes) {
|
|
216
236
|
const appFilePath = path.resolve(process.cwd(), appPath);
|
|
237
|
+
const defaultPath = basePath ? `${basePath}/` : '/';
|
|
217
238
|
if (!fs.existsSync(appFilePath)) {
|
|
218
239
|
log('warn', `App.tsx file does not exist: ${appFilePath}`);
|
|
219
|
-
return cachedRoutes.value || [{ path:
|
|
240
|
+
return cachedRoutes.value || [{ path: defaultPath }];
|
|
220
241
|
}
|
|
221
242
|
const currentHash = calculateFileHash(appFilePath);
|
|
222
243
|
// Check if we need to regenerate
|
|
@@ -224,7 +245,7 @@ function generateRoutes(appPath, outputPath, lastHash, cachedRoutes) {
|
|
|
224
245
|
return cachedRoutes.value;
|
|
225
246
|
}
|
|
226
247
|
lastHash.value = currentHash;
|
|
227
|
-
const routes = parseRoutes(appPath);
|
|
248
|
+
const routes = parseRoutes(appPath, basePath);
|
|
228
249
|
cachedRoutes.value = routes;
|
|
229
250
|
// Ensure output directory exists
|
|
230
251
|
const outputDir = path.dirname(outputPath);
|
|
@@ -237,28 +258,36 @@ function generateRoutes(appPath, outputPath, lastHash, cachedRoutes) {
|
|
|
237
258
|
return routes;
|
|
238
259
|
}
|
|
239
260
|
function routeParserPlugin(options = {}) {
|
|
240
|
-
const { appPath = './client/src/app.tsx', outputPath = './dist/client/routes.json',
|
|
261
|
+
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
|
+
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)
|
|
241
271
|
const lastHash = { value: null };
|
|
242
|
-
const cachedRoutes = {
|
|
243
|
-
value: null,
|
|
244
|
-
};
|
|
272
|
+
const cachedRoutes = { value: null };
|
|
245
273
|
return {
|
|
246
274
|
name: 'fullstack-route-parser',
|
|
247
275
|
configureServer(server) {
|
|
248
|
-
// Development mode:
|
|
276
|
+
// Development mode: use configuredBasePath (should be '' when isDev, set by preset)
|
|
249
277
|
const appFullPath = path.resolve(process.cwd(), appPath);
|
|
250
278
|
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
251
279
|
// Initial generation
|
|
252
|
-
generateRoutes(appPath, fullOutputPath, lastHash, cachedRoutes);
|
|
280
|
+
generateRoutes(appPath, fullOutputPath, configuredBasePath, lastHash, cachedRoutes);
|
|
253
281
|
// Watch for changes
|
|
254
282
|
server.watcher.add(appFullPath);
|
|
255
283
|
server.watcher.on('change', (file) => {
|
|
256
284
|
if (file === appFullPath) {
|
|
257
|
-
generateRoutes(appPath, fullOutputPath, lastHash, cachedRoutes);
|
|
285
|
+
generateRoutes(appPath, fullOutputPath, configuredBasePath, lastHash, cachedRoutes);
|
|
258
286
|
}
|
|
259
287
|
});
|
|
260
|
-
// Middleware to serve routes.json at ${
|
|
261
|
-
|
|
288
|
+
// Middleware to serve routes.json at ${serveBasePath}/routes.json
|
|
289
|
+
// serveBasePath is based on clientBasePath (not affected by dev/prod basePath logic)
|
|
290
|
+
const routesJsonPath = serveBasePath ? `${serveBasePath}/routes.json` : '/routes.json';
|
|
262
291
|
server.middlewares.use((req, res, next) => {
|
|
263
292
|
const urlPath = req.url?.split('?')[0];
|
|
264
293
|
if (urlPath === routesJsonPath) {
|
|
@@ -276,9 +305,9 @@ function routeParserPlugin(options = {}) {
|
|
|
276
305
|
});
|
|
277
306
|
},
|
|
278
307
|
buildStart() {
|
|
279
|
-
// Build mode: generate routes
|
|
308
|
+
// Build mode: generate routes with configuredBasePath
|
|
280
309
|
const fullOutputPath = path.resolve(process.cwd(), outputPath);
|
|
281
|
-
generateRoutes(appPath, fullOutputPath, lastHash, cachedRoutes);
|
|
310
|
+
generateRoutes(appPath, fullOutputPath, configuredBasePath, lastHash, cachedRoutes);
|
|
282
311
|
},
|
|
283
312
|
generateBundle() {
|
|
284
313
|
// Add routes.json to build output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route-parser-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"route-parser-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/route-parser-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static Assets Plugin for Vite
|
|
3
|
+
*
|
|
4
|
+
* Supports importing static files from shared/static directory:
|
|
5
|
+
* - JSON files → bundled into HTML, injected as window.__STATIC_JSON__
|
|
6
|
+
* - Other files → converted to URL {clientBasePath}/static/path
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* import config from '@shared/static/config.json';
|
|
10
|
+
* import logoUrl from '@shared/static/images/logo.png';
|
|
11
|
+
*/
|
|
12
|
+
import type { Plugin } from 'vite';
|
|
13
|
+
export interface StaticAssetsPluginOptions {
|
|
14
|
+
/**
|
|
15
|
+
* Client base path prefix for routes
|
|
16
|
+
* @default ''
|
|
17
|
+
*/
|
|
18
|
+
clientBasePath?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Root directory for the project
|
|
21
|
+
* @default process.cwd()
|
|
22
|
+
*/
|
|
23
|
+
rootDir?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function staticAssetsPlugin(options?: StaticAssetsPluginOptions): Plugin;
|
|
26
|
+
export default staticAssetsPlugin;
|
|
27
|
+
//# sourceMappingURL=static-assets-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-assets-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/static-assets-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAoD,MAAM,MAAM,CAAC;AAKrF,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,yBAA8B,GACtC,MAAM,CAuUR;AAED,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Static Assets Plugin for Vite
|
|
4
|
+
*
|
|
5
|
+
* Supports importing static files from shared/static directory:
|
|
6
|
+
* - JSON files → bundled into HTML, injected as window.__STATIC_JSON__
|
|
7
|
+
* - Other files → converted to URL {clientBasePath}/static/path
|
|
8
|
+
*
|
|
9
|
+
* Usage:
|
|
10
|
+
* import config from '@shared/static/config.json';
|
|
11
|
+
* import logoUrl from '@shared/static/images/logo.png';
|
|
12
|
+
*/
|
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
18
|
+
}
|
|
19
|
+
Object.defineProperty(o, k2, desc);
|
|
20
|
+
}) : (function(o, m, k, k2) {
|
|
21
|
+
if (k2 === undefined) k2 = k;
|
|
22
|
+
o[k2] = m[k];
|
|
23
|
+
}));
|
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
26
|
+
}) : function(o, v) {
|
|
27
|
+
o["default"] = v;
|
|
28
|
+
});
|
|
29
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
30
|
+
var ownKeys = function(o) {
|
|
31
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
32
|
+
var ar = [];
|
|
33
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
34
|
+
return ar;
|
|
35
|
+
};
|
|
36
|
+
return ownKeys(o);
|
|
37
|
+
};
|
|
38
|
+
return function (mod) {
|
|
39
|
+
if (mod && mod.__esModule) return mod;
|
|
40
|
+
var result = {};
|
|
41
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
42
|
+
__setModuleDefault(result, mod);
|
|
43
|
+
return result;
|
|
44
|
+
};
|
|
45
|
+
})();
|
|
46
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
47
|
+
exports.staticAssetsPlugin = staticAssetsPlugin;
|
|
48
|
+
const fs = __importStar(require("fs"));
|
|
49
|
+
const path = __importStar(require("path"));
|
|
50
|
+
const glob_1 = require("glob");
|
|
51
|
+
const SHARED_STATIC_PREFIX = '@shared/static/';
|
|
52
|
+
const VIRTUAL_MODULE_PREFIX = '\0@shared/static/';
|
|
53
|
+
function staticAssetsPlugin(options = {}) {
|
|
54
|
+
const { clientBasePath = '', rootDir = process.cwd() } = options;
|
|
55
|
+
const staticDir = path.resolve(rootDir, 'shared/static');
|
|
56
|
+
let isDev = true;
|
|
57
|
+
let resolvedConfig = null;
|
|
58
|
+
// Cache for JSON data (used in build mode)
|
|
59
|
+
let jsonDataCache = null;
|
|
60
|
+
/**
|
|
61
|
+
* Get the key for a static file path (used for __STATIC_JSON__)
|
|
62
|
+
*/
|
|
63
|
+
function getJsonKey(filePath) {
|
|
64
|
+
// Remove .json extension and use relative path as key
|
|
65
|
+
return filePath.replace(/\.json$/, '');
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Scan and read all JSON files from shared/static directory
|
|
69
|
+
*/
|
|
70
|
+
function scanJsonFiles() {
|
|
71
|
+
const jsonData = {};
|
|
72
|
+
if (!fs.existsSync(staticDir)) {
|
|
73
|
+
return jsonData;
|
|
74
|
+
}
|
|
75
|
+
const jsonFiles = glob_1.glob.sync('**/*.json', {
|
|
76
|
+
cwd: staticDir,
|
|
77
|
+
nodir: true,
|
|
78
|
+
});
|
|
79
|
+
for (const file of jsonFiles) {
|
|
80
|
+
const fullPath = path.join(staticDir, file);
|
|
81
|
+
try {
|
|
82
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
83
|
+
const key = getJsonKey(file);
|
|
84
|
+
jsonData[key] = JSON.parse(content);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
console.warn(`[static-assets] Failed to parse JSON file: ${file}`, e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return jsonData;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Get JSON data (with caching for build mode)
|
|
94
|
+
*/
|
|
95
|
+
function getJsonData() {
|
|
96
|
+
if (!isDev && jsonDataCache) {
|
|
97
|
+
return jsonDataCache;
|
|
98
|
+
}
|
|
99
|
+
const data = scanJsonFiles();
|
|
100
|
+
if (!isDev) {
|
|
101
|
+
jsonDataCache = data;
|
|
102
|
+
}
|
|
103
|
+
return data;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
name: 'fullstack-static-assets',
|
|
107
|
+
enforce: 'pre',
|
|
108
|
+
config(_config, { command }) {
|
|
109
|
+
isDev = command === 'serve';
|
|
110
|
+
},
|
|
111
|
+
configResolved(config) {
|
|
112
|
+
resolvedConfig = config;
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* Intercept @shared/static/* imports and return virtual module ID
|
|
116
|
+
*
|
|
117
|
+
* For JSON files, the virtual ID is suffixed with .js to prevent
|
|
118
|
+
* vite:json's transform hook from trying to parse it as JSON.
|
|
119
|
+
*/
|
|
120
|
+
resolveId(id) {
|
|
121
|
+
if (id.startsWith(SHARED_STATIC_PREFIX)) {
|
|
122
|
+
const relativePath = id.slice(SHARED_STATIC_PREFIX.length);
|
|
123
|
+
const virtualId = VIRTUAL_MODULE_PREFIX + relativePath;
|
|
124
|
+
// Prevent vite:json from processing JSON virtual modules
|
|
125
|
+
return relativePath.endsWith('.json') ? virtualId + '.js' : virtualId;
|
|
126
|
+
}
|
|
127
|
+
return null;
|
|
128
|
+
},
|
|
129
|
+
/**
|
|
130
|
+
* Load virtual module content
|
|
131
|
+
* - JSON (dev) → export default { ... } (inline data, read from disk)
|
|
132
|
+
* - JSON (prod) → export default window.__STATIC_JSON__['key']
|
|
133
|
+
* - Other → export default '{clientBasePath}/static/path'
|
|
134
|
+
*/
|
|
135
|
+
load(id) {
|
|
136
|
+
if (!id.startsWith(VIRTUAL_MODULE_PREFIX)) {
|
|
137
|
+
return null;
|
|
138
|
+
}
|
|
139
|
+
let relativePath = id.slice(VIRTUAL_MODULE_PREFIX.length);
|
|
140
|
+
// Strip .js suffix added in resolveId for JSON files
|
|
141
|
+
if (relativePath.endsWith('.json.js')) {
|
|
142
|
+
relativePath = relativePath.slice(0, -3);
|
|
143
|
+
}
|
|
144
|
+
const isJson = relativePath.endsWith('.json');
|
|
145
|
+
if (isJson) {
|
|
146
|
+
if (isDev) {
|
|
147
|
+
// Dev: inline the JSON data directly so we don't depend on
|
|
148
|
+
// window.__STATIC_JSON__ in the HTML (avoids HTML regeneration issues)
|
|
149
|
+
const fullPath = path.join(staticDir, relativePath);
|
|
150
|
+
try {
|
|
151
|
+
const content = fs.readFileSync(fullPath, 'utf-8');
|
|
152
|
+
return `export default ${content};`;
|
|
153
|
+
}
|
|
154
|
+
catch (e) {
|
|
155
|
+
console.warn(`[static-assets] Failed to read JSON: ${relativePath}`, e);
|
|
156
|
+
return `export default undefined;`;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Prod: read from window.__STATIC_JSON__ injected into HTML
|
|
160
|
+
const key = getJsonKey(relativePath);
|
|
161
|
+
return `export default window.__STATIC_JSON__['${key}'];`;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const staticUrl = `${clientBasePath}/static/${relativePath}`;
|
|
165
|
+
return `export default '${staticUrl}';`;
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
/**
|
|
169
|
+
* Inject __STATIC_JSON__ script into HTML
|
|
170
|
+
*/
|
|
171
|
+
transformIndexHtml() {
|
|
172
|
+
// In dev mode, JSON data is inlined directly in virtual modules,
|
|
173
|
+
// so we don't need __STATIC_JSON__ in the HTML.
|
|
174
|
+
if (isDev)
|
|
175
|
+
return;
|
|
176
|
+
const jsonData = getJsonData();
|
|
177
|
+
if (Object.keys(jsonData).length === 0) {
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
const scriptContent = `window.__STATIC_JSON__ = ${JSON.stringify(jsonData)};`;
|
|
181
|
+
const tags = [
|
|
182
|
+
{
|
|
183
|
+
tag: 'script',
|
|
184
|
+
children: scriptContent,
|
|
185
|
+
injectTo: 'head-prepend',
|
|
186
|
+
},
|
|
187
|
+
];
|
|
188
|
+
return { html: '', tags };
|
|
189
|
+
},
|
|
190
|
+
/**
|
|
191
|
+
* Configure dev server for HMR support
|
|
192
|
+
*/
|
|
193
|
+
configureServer(server) {
|
|
194
|
+
// Watch shared/static directory for changes
|
|
195
|
+
if (!fs.existsSync(staticDir)) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const watcher = server.watcher;
|
|
199
|
+
// Add static directory to watch list
|
|
200
|
+
watcher.add(staticDir);
|
|
201
|
+
// Handle file changes in static directory
|
|
202
|
+
const handleStaticFileChange = (changedPath) => {
|
|
203
|
+
if (!changedPath.startsWith(staticDir)) {
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
const relativePath = path.relative(staticDir, changedPath);
|
|
207
|
+
const isJson = relativePath.endsWith('.json');
|
|
208
|
+
if (isJson) {
|
|
209
|
+
// JSON file changed: invalidate the virtual module so Vite
|
|
210
|
+
// re-runs the load hook with fresh data on next request
|
|
211
|
+
const moduleId = VIRTUAL_MODULE_PREFIX + relativePath;
|
|
212
|
+
const mod = server.moduleGraph.getModuleById(moduleId);
|
|
213
|
+
if (mod) {
|
|
214
|
+
server.moduleGraph.invalidateModule(mod);
|
|
215
|
+
}
|
|
216
|
+
// Send custom HMR event for JSON update
|
|
217
|
+
server.ws.send({
|
|
218
|
+
type: 'custom',
|
|
219
|
+
event: 'static-json-update',
|
|
220
|
+
data: { path: relativePath },
|
|
221
|
+
});
|
|
222
|
+
// Trigger full reload so the virtual module is re-requested with fresh data
|
|
223
|
+
server.ws.send({
|
|
224
|
+
type: 'full-reload',
|
|
225
|
+
path: '*',
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
// Non-JSON file changed: just send HMR update event
|
|
230
|
+
// The URL doesn't change, but we notify for potential cache invalidation
|
|
231
|
+
server.ws.send({
|
|
232
|
+
type: 'custom',
|
|
233
|
+
event: 'static-asset-update',
|
|
234
|
+
data: { path: relativePath },
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
};
|
|
238
|
+
watcher.on('change', handleStaticFileChange);
|
|
239
|
+
watcher.on('add', handleStaticFileChange);
|
|
240
|
+
watcher.on('unlink', (changedPath) => {
|
|
241
|
+
if (changedPath.startsWith(staticDir)) {
|
|
242
|
+
if (changedPath.endsWith('.json')) {
|
|
243
|
+
const relativePath = path.relative(staticDir, changedPath);
|
|
244
|
+
const moduleId = VIRTUAL_MODULE_PREFIX + relativePath;
|
|
245
|
+
const mod = server.moduleGraph.getModuleById(moduleId);
|
|
246
|
+
if (mod) {
|
|
247
|
+
server.moduleGraph.invalidateModule(mod);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
// File deleted: trigger full reload
|
|
251
|
+
server.ws.send({
|
|
252
|
+
type: 'full-reload',
|
|
253
|
+
path: '*',
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
// Serve static files in dev mode
|
|
258
|
+
server.middlewares.use((req, res, next) => {
|
|
259
|
+
const staticPrefix = `${clientBasePath}/static/`;
|
|
260
|
+
const url = req.url || '';
|
|
261
|
+
if (!url.startsWith(staticPrefix)) {
|
|
262
|
+
return next();
|
|
263
|
+
}
|
|
264
|
+
const rawRelativePath = url.slice(staticPrefix.length).split('?')[0];
|
|
265
|
+
let relativePath;
|
|
266
|
+
try {
|
|
267
|
+
relativePath = decodeURIComponent(rawRelativePath);
|
|
268
|
+
}
|
|
269
|
+
catch {
|
|
270
|
+
res.statusCode = 400;
|
|
271
|
+
res.end('Bad Request');
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const filePath = path.join(staticDir, relativePath);
|
|
275
|
+
// Security: prevent path traversal
|
|
276
|
+
const normalizedPath = path.normalize(filePath);
|
|
277
|
+
if (!normalizedPath.startsWith(staticDir)) {
|
|
278
|
+
res.statusCode = 403;
|
|
279
|
+
res.end('Forbidden');
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
if (!fs.existsSync(filePath)) {
|
|
283
|
+
res.statusCode = 404;
|
|
284
|
+
res.end('Not Found');
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
const stat = fs.statSync(filePath);
|
|
288
|
+
if (stat.isDirectory()) {
|
|
289
|
+
res.statusCode = 403;
|
|
290
|
+
res.end('Forbidden');
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
// Get MIME type
|
|
294
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
295
|
+
const mimeTypes = {
|
|
296
|
+
'.json': 'application/json',
|
|
297
|
+
'.png': 'image/png',
|
|
298
|
+
'.jpg': 'image/jpeg',
|
|
299
|
+
'.jpeg': 'image/jpeg',
|
|
300
|
+
'.gif': 'image/gif',
|
|
301
|
+
'.svg': 'image/svg+xml',
|
|
302
|
+
'.webp': 'image/webp',
|
|
303
|
+
'.ico': 'image/x-icon',
|
|
304
|
+
'.woff': 'font/woff',
|
|
305
|
+
'.woff2': 'font/woff2',
|
|
306
|
+
'.ttf': 'font/ttf',
|
|
307
|
+
'.eot': 'application/vnd.ms-fontobject',
|
|
308
|
+
'.otf': 'font/otf',
|
|
309
|
+
'.css': 'text/css',
|
|
310
|
+
'.js': 'application/javascript',
|
|
311
|
+
'.txt': 'text/plain',
|
|
312
|
+
'.html': 'text/html',
|
|
313
|
+
'.xml': 'application/xml',
|
|
314
|
+
'.pdf': 'application/pdf',
|
|
315
|
+
'.mp3': 'audio/mpeg',
|
|
316
|
+
'.mp4': 'video/mp4',
|
|
317
|
+
'.webm': 'video/webm',
|
|
318
|
+
};
|
|
319
|
+
const contentType = mimeTypes[ext] || 'application/octet-stream';
|
|
320
|
+
res.setHeader('Content-Type', contentType);
|
|
321
|
+
res.setHeader('Cache-Control', 'no-cache');
|
|
322
|
+
// Stream the file
|
|
323
|
+
const stream = fs.createReadStream(filePath);
|
|
324
|
+
stream.pipe(res);
|
|
325
|
+
});
|
|
326
|
+
},
|
|
327
|
+
/**
|
|
328
|
+
* Copy shared/static to dist/shared/static for production serving
|
|
329
|
+
*/
|
|
330
|
+
closeBundle() {
|
|
331
|
+
if (isDev || !resolvedConfig || !fs.existsSync(staticDir)) {
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
const outDir = resolvedConfig.build.outDir;
|
|
335
|
+
// outDir is typically dist/client, target is dist/shared/static
|
|
336
|
+
const distRoot = path.resolve(outDir, '..');
|
|
337
|
+
const destDir = path.join(distRoot, 'shared', 'static');
|
|
338
|
+
fs.cpSync(staticDir, destDir, { recursive: true });
|
|
339
|
+
console.log(`[static-assets] Copied shared/static → ${path.relative(rootDir, destDir)}`);
|
|
340
|
+
},
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
exports.default = staticAssetsPlugin;
|
|
344
|
+
//# sourceMappingURL=static-assets-plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static-assets-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/static-assets-plugin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/fullstack-vite-preset",
|
|
3
|
-
"version": "1.0.2-alpha.
|
|
3
|
+
"version": "1.0.2-alpha.30",
|
|
4
4
|
"files": [
|
|
5
5
|
"lib",
|
|
6
6
|
"src/empty.css",
|
|
@@ -33,15 +33,16 @@
|
|
|
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.
|
|
37
|
-
"@lark-apaas/
|
|
38
|
-
"@lark-apaas/vite-inspector-plugin": "^1.0.1",
|
|
36
|
+
"@lark-apaas/devtool-kits": "^1.2.18",
|
|
37
|
+
"@lark-apaas/vite-inspector-plugin": "1.0.1-alpha.13",
|
|
39
38
|
"@vitejs/plugin-react": "^4.5.0",
|
|
40
39
|
"clsx": "^2.1.1",
|
|
41
40
|
"colorjs.io": "^0.5.2",
|
|
42
41
|
"dotenv": "^16.4.5",
|
|
43
42
|
"echarts": "^6.0.0",
|
|
44
43
|
"echarts-for-react": "^3.0.2",
|
|
44
|
+
"glob": "^11.0.0",
|
|
45
|
+
"html-minifier-terser": "^7.2.0",
|
|
45
46
|
"postcss-import": "^16.1.1",
|
|
46
47
|
"styled-jsx": "^5.1.6",
|
|
47
48
|
"tailwind-merge": "^2.5.5",
|
|
@@ -5,7 +5,7 @@ import Color from 'colorjs.io';
|
|
|
5
5
|
/**
|
|
6
6
|
* Convert HSL/HSLA color to hex or rgba
|
|
7
7
|
*/
|
|
8
|
-
function convertColorToHex(color) {
|
|
8
|
+
export function convertColorToHex(color) {
|
|
9
9
|
if (typeof color !== 'string') return color;
|
|
10
10
|
|
|
11
11
|
const trimmed = color.trim();
|
|
@@ -30,7 +30,7 @@ function convertColorToHex(color) {
|
|
|
30
30
|
/**
|
|
31
31
|
* Deep traverse object to transform all HSL colors in 'color' property
|
|
32
32
|
*/
|
|
33
|
-
function transformColors(value, visited = new WeakSet()) {
|
|
33
|
+
export function transformColors(value, visited = new WeakSet()) {
|
|
34
34
|
if (value === null || value === undefined) return value;
|
|
35
35
|
if (typeof value !== 'object') return value;
|
|
36
36
|
if (visited.has(value)) return value;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import type { Plugin } from 'vite';
|
|
2
|
-
/**
|
|
3
|
-
* Vite plugin to handle inspector CSS imports
|
|
4
|
-
*
|
|
5
|
-
* Creates an empty inspector.dev.css stub file if it doesn't exist.
|
|
6
|
-
* This is needed because:
|
|
7
|
-
* 1. @lark-apaas/client-toolkit imports @/inspector.dev.css
|
|
8
|
-
* 2. Vite's internal postcss-import processes @import statements before
|
|
9
|
-
* custom plugins can intercept them
|
|
10
|
-
* 3. The inspector UI injects its own styles at runtime, so this file
|
|
11
|
-
* can be empty
|
|
12
|
-
*
|
|
13
|
-
* In production mode, the stub file is cleaned up after build.
|
|
14
|
-
* In development mode, the stub file is kept (or user can provide real CSS).
|
|
15
|
-
*/
|
|
16
|
-
export declare function inspectorCssPlugin(options: {
|
|
17
|
-
isDev: boolean;
|
|
18
|
-
}): Plugin;
|
|
19
|
-
//# sourceMappingURL=inspector-css-plugin.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspector-css-plugin.d.ts","sourceRoot":"","sources":["../../src/vite-plugins/inspector-css-plugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAkB,MAAM,MAAM,CAAC;AAKnD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CA8CtE"}
|
|
@@ -1,70 +0,0 @@
|
|
|
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.inspectorCssPlugin = inspectorCssPlugin;
|
|
7
|
-
const fs_1 = __importDefault(require("fs"));
|
|
8
|
-
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const INSPECTOR_CSS_FILENAME = 'inspector.dev.css';
|
|
10
|
-
const EMPTY_CSS_CONTENT = '/* Inspector CSS - placeholder for postcss-import */\n';
|
|
11
|
-
/**
|
|
12
|
-
* Vite plugin to handle inspector CSS imports
|
|
13
|
-
*
|
|
14
|
-
* Creates an empty inspector.dev.css stub file if it doesn't exist.
|
|
15
|
-
* This is needed because:
|
|
16
|
-
* 1. @lark-apaas/client-toolkit imports @/inspector.dev.css
|
|
17
|
-
* 2. Vite's internal postcss-import processes @import statements before
|
|
18
|
-
* custom plugins can intercept them
|
|
19
|
-
* 3. The inspector UI injects its own styles at runtime, so this file
|
|
20
|
-
* can be empty
|
|
21
|
-
*
|
|
22
|
-
* In production mode, the stub file is cleaned up after build.
|
|
23
|
-
* In development mode, the stub file is kept (or user can provide real CSS).
|
|
24
|
-
*/
|
|
25
|
-
function inspectorCssPlugin(options) {
|
|
26
|
-
const { isDev } = options;
|
|
27
|
-
let createdStubFile = null;
|
|
28
|
-
return {
|
|
29
|
-
name: 'vite-inspector-css',
|
|
30
|
-
enforce: 'pre',
|
|
31
|
-
configResolved(config) {
|
|
32
|
-
const rootDir = config.root || process.cwd();
|
|
33
|
-
const stubPath = path_1.default.resolve(rootDir, 'client/src', INSPECTOR_CSS_FILENAME);
|
|
34
|
-
// Create stub file if it doesn't exist (both dev and production)
|
|
35
|
-
// This prevents Vite's internal postcss-import from failing
|
|
36
|
-
if (!fs_1.default.existsSync(stubPath)) {
|
|
37
|
-
try {
|
|
38
|
-
// Ensure directory exists
|
|
39
|
-
const dir = path_1.default.dirname(stubPath);
|
|
40
|
-
if (!fs_1.default.existsSync(dir)) {
|
|
41
|
-
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
42
|
-
}
|
|
43
|
-
fs_1.default.writeFileSync(stubPath, EMPTY_CSS_CONTENT);
|
|
44
|
-
// Only track for cleanup in production mode
|
|
45
|
-
if (!isDev) {
|
|
46
|
-
createdStubFile = stubPath;
|
|
47
|
-
}
|
|
48
|
-
console.log(`[vite-inspector-css] Created stub: ${stubPath}`);
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
console.warn(`[vite-inspector-css] Could not create stub file: ${e}`);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
},
|
|
55
|
-
buildEnd() {
|
|
56
|
-
// Clean up the stub file after production build completes
|
|
57
|
-
if (createdStubFile && fs_1.default.existsSync(createdStubFile)) {
|
|
58
|
-
try {
|
|
59
|
-
fs_1.default.unlinkSync(createdStubFile);
|
|
60
|
-
console.log(`[vite-inspector-css] Cleaned up stub: ${createdStubFile}`);
|
|
61
|
-
}
|
|
62
|
-
catch (e) {
|
|
63
|
-
console.warn(`[vite-inspector-css] Could not clean up stub file: ${e}`);
|
|
64
|
-
}
|
|
65
|
-
createdStubFile = null;
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
//# sourceMappingURL=inspector-css-plugin.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inspector-css-plugin.js","sourceRoot":"","sources":["../../src/vite-plugins/inspector-css-plugin.ts"],"names":[],"mappings":";;;;;AAqBA,gDA8CC;AAnED,4CAAoB;AACpB,gDAAwB;AAGxB,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AACnD,MAAM,iBAAiB,GAAG,wDAAwD,CAAC;AAEnF;;;;;;;;;;;;;GAaG;AACH,SAAgB,kBAAkB,CAAC,OAA2B;IAC5D,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,IAAI,eAAe,GAAkB,IAAI,CAAC;IAE1C,OAAO;QACL,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,KAAK;QAEd,cAAc,CAAC,MAAsB;YACnC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,sBAAsB,CAAC,CAAC;YAE7E,iEAAiE;YACjE,4DAA4D;YAC5D,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC;oBACH,0BAA0B;oBAC1B,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACnC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;wBACxB,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACzC,CAAC;oBACD,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;oBAC9C,4CAA4C;oBAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,eAAe,GAAG,QAAQ,CAAC;oBAC7B,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC;gBAChE,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,oDAAoD,CAAC,EAAE,CAAC,CAAC;gBACxE,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ;YACN,0DAA0D;YAC1D,IAAI,eAAe,IAAI,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC;oBACH,YAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;oBAC/B,OAAO,CAAC,GAAG,CAAC,yCAAyC,eAAe,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBACD,eAAe,GAAG,IAAI,CAAC;YACzB,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
|