Files
maestro/app/vite.config.js
T
wangjia 0a896439d1 feat(app): React 18 + Vite 前端,像素级复刻 Maestro 设计系统 console
复用 design/ 设计系统作单一真相源(token + _ds_bundle.js + 6 个 surface
源文件不改),只移植 App 入口。整屏 console 与原型截图 diff 0.023%(≤0.5% 阈)。

- vite.config.js:经典 JSX + 注入 React,alias @ds → ../design
- src/globals.js:先注入 window.React,供预编译 bundle 使用
- src/main.jsx:按序加载 tokens → bundle → mock/i18n → 6 surface → App
- src/app.jsx:移植自原型 App(),三栏可拖拽 grid
- src/ambience.css:扫描线 + 暗角 phosphor 氛围层

下一步:mock data.js/i18n.js 换成真实 REST + WebSocket(按 ⑧ 前端 API 契约)。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-24 13:50:22 +08:00

24 lines
779 B
JavaScript

import { defineConfig } from 'vite';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// 复刻策略:设计系统(design/)为单源。surface/.jsx 源文件不改,用经典 JSX 转换 +
// 注入 React 直接加载;编译好的 _ds_bundle.js 走全局 window.React(见 src/globals.js)。
export default defineConfig({
resolve: {
alias: { '@ds': path.resolve(__dirname, '../design') },
},
esbuild: {
jsx: 'transform',
jsxFactory: 'React.createElement',
jsxFragment: 'React.Fragment',
jsxInject: `import React from 'react'`,
},
server: {
port: 4519,
fs: { allow: [path.resolve(__dirname, '..')] }, // 允许访问仓库内的 design/
},
});