import tailwindcss from '@tailwindcss/vite'; import react from '@vitejs/plugin-react'; import path from 'path'; import {defineConfig} from 'vite'; /** * 발행 사이트 렌더러. * * 빌드가 두 번 돈다: * build:client → dist/client 브라우저 번들 + manifest(자산 경로를 프리렌더가 읽는다) * build:prerender → dist/prerender 프리렌더러 자체를 SSR 번들로 묶는다 * (별도 TS 로더 없이 경로 별칭·TSX·CSS import 가 해결된다) * 그다음 node dist/prerender/prerender.js 가 payload 마다 정적 HTML 을 굽는다. * * ★ 이 앱은 런타임 서버가 없다. 결과물은 파일뿐이라 어디에 올려도 돈다. */ export default defineConfig(({isSsrBuild}) => ({ plugins: [react(), tailwindcss()], resolve: { alias: { // ★ 별칭이 '@' 가 아니라 '@site' 인 이유(2026-09-09) // 빌더 미리보기가 **이 렌더러를 그대로** 쓴다(solution/frontend). 두 앱이 '@' 를 // 각자 자기 src 로 두면, 여기 컴포넌트를 저쪽에서 불러올 때 내부 import 가 // 저쪽 src 로 떨어져 조용히 다른 파일을 잡는다. 이름을 갈라 두면 어디서 불러도 같다. '@site': path.resolve(__dirname, 'src'), '@o2o/shared': path.resolve(__dirname, '../shared/src'), }, }, build: { // 프리렌더가 산출물 파일명을 알아야 HTML 에