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') }, }, // surface/.jsx 与 app.jsx 统一走全局 React(globals.js 注入 window.React), // 不向各模块注入 import——否则生产构建时 rollup 会试图从 design/ 解析 react 而失败。 esbuild: { jsx: 'transform', jsxFactory: 'React.createElement', jsxFragment: 'React.Fragment', }, server: { port: 4519, fs: { allow: [path.resolve(__dirname, '..')] }, // 允许访问仓库内的 design/ // 把 REST + WS 反代到本地 daemon(:4517),客户端用同源相对路径 proxy: { '/api': { target: 'http://127.0.0.1:4517', changeOrigin: true }, '/ws': { target: 'http://127.0.0.1:4517', ws: true, changeOrigin: true }, }, }, });