0a896439d1
复用 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>
24 lines
779 B
JavaScript
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/
|
|
},
|
|
});
|