import { execSync } from 'node:child_process' import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' // 빌드 식별자 — 여러 명에게 며칠에 걸쳐 피드백을 받으면 "어느 빌드였나"가 반드시 꼬인다. // 화면 구석에 이 값을 박아 두면 피드백을 버전에 붙여 정리할 수 있다. const buildInfo = (() => { let sha = 'nogit' try { sha = execSync('git rev-parse --short HEAD', { stdio: ['ignore', 'pipe', 'ignore'] }) .toString() .trim() } catch { // 깃 없는 환경(배포 서버 등)에서 빌드해도 실패하지 않게 둔다 } const d = new Date() const p = (n) => String(n).padStart(2, '0') return `${p(d.getMonth() + 1)}${p(d.getDate())}-${p(d.getHours())}${p(d.getMinutes())}·${sha}` })() // https://vite.dev/config/ export default defineConfig({ // 상대 경로로 빌드한다. NAS Web Station이 문서 루트 하위 폴더(/ProjectSS/ 등)로 서빙하므로 // 기본값('/')이면 asset을 도메인 루트에서 찾아 404 → 빈 화면이 된다. './'로 두면 어느 // 서브패스에 떨어뜨려도 그대로 동작해서, 폴더를 옮길 때 재빌드할 필요가 없다. base: './', plugins: [react()], define: { __BUILD_INFO__: JSON.stringify(buildInfo), }, })