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>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
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/
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user