Files
jiang13-forum/frontend/vite.config.ts
freefire e71c77b5ca feat: Vike 骨架(pages feed+spa / renderer 双端入口 / AppShell 拆分 / serverClient)
vite.config 接入 vike 插件并改产出 dist/client+dist/server;feed 白名单 route 匹配 /、/board/:id、/post/:id(.html);spa catch-all ssr:false;onRenderHtml renderToReadableStream 等 allReady 输出完整 HTML 并带主题/缩放脚本;onRenderClient 沿用样式表等待+冷启动预热+hydrate 回退;getHomeStoreState 作用域 + hydrating 变体入 RequestScope;删除 index.html 与 main.tsx
2026-09-09 01:21:58 +08:00

52 lines
1.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import path from 'path';
import { defineConfig } from 'vite';
import react from '@vitejs/plugin-react';
import vike from 'vike/plugin';
// 与 Go 后端默认端口一致,可通过 VITE_API_PORT 覆盖
const apiPort = process.env.VITE_API_PORT || '3000';
const apiTarget = `http://localhost:${apiPort}`;
export default defineConfig({
plugins: [react(), vike()],
resolve: {
alias: {
'@': path.resolve(__dirname, './src'),
},
},
base: '/',
build: {
// Vike 双构建:产出 dist/client(静态资源)+ dist/server(SSR 渲染入口)
outDir: 'dist',
emptyOutDir: true,
rollupOptions: {
output: {
manualChunks(id) {
if (!id.includes('node_modules')) return;
if (id.includes('dompurify')) return 'purify-vendor';
if (id.includes('@tanstack/react-virtual')) return 'virtual-vendor';
if (id.includes('@radix-ui') || id.includes('lucide-react')) return 'ui-vendor';
if (
id.includes('react-dom')
|| id.includes('react-router')
|| /[/\\]node_modules[/\\]react[/\\]/.test(id)
) {
return 'react-vendor';
}
},
},
},
},
server: {
port: 5173,
strictPort: true,
proxy: {
'/api': apiTarget,
'/uploads': apiTarget,
'/media': apiTarget,
'/oauth': apiTarget,
'/.well-known': apiTarget,
},
},
});