2026-05-30 21:18:13 +09:00
|
|
|
import { fileURLToPath, URL } from 'node:url'
|
2026-06-06 14:08:01 +09:00
|
|
|
import { readFileSync } from 'node:fs'
|
2026-05-30 21:18:13 +09:00
|
|
|
|
|
|
|
|
import { defineConfig } from 'vite'
|
|
|
|
|
import vue from '@vitejs/plugin-vue'
|
|
|
|
|
import vueDevTools from 'vite-plugin-vue-devtools'
|
|
|
|
|
|
2026-06-06 14:08:01 +09:00
|
|
|
// 앱 버전 정보(설정 > 앱 버전)에 노출 — package.json 을 단일 출처로 사용
|
|
|
|
|
const pkg = JSON.parse(readFileSync(new URL('./package.json', import.meta.url), 'utf-8'))
|
|
|
|
|
|
2026-05-30 21:18:13 +09:00
|
|
|
// https://vite.dev/config/
|
2026-06-07 16:20:55 +09:00
|
|
|
export default defineConfig(({ mode }) => ({
|
|
|
|
|
// Electron(데스크톱)은 file:// 로 로드하므로 상대경로 자산이 필요. 그 외(웹/Capacitor)는 '/'.
|
|
|
|
|
base: mode === 'electron' ? './' : '/',
|
2026-06-06 14:08:01 +09:00
|
|
|
define: {
|
|
|
|
|
__APP_VERSION__: JSON.stringify(pkg.version),
|
|
|
|
|
},
|
2026-06-06 15:04:15 +09:00
|
|
|
build: {
|
|
|
|
|
// 마크다운 에디터(toast-ui ~1MB)는 게시판 작성/상세 라우트에서만 동적 로딩되어
|
|
|
|
|
// 메인 번들에 포함되지 않는다. 의도된 지연 청크이므로 경고 한도를 현실적으로 상향.
|
|
|
|
|
chunkSizeWarningLimit: 1200,
|
|
|
|
|
},
|
2026-05-30 21:18:13 +09:00
|
|
|
plugins: [
|
|
|
|
|
vue(),
|
|
|
|
|
vueDevTools(),
|
|
|
|
|
],
|
|
|
|
|
resolve: {
|
|
|
|
|
alias: {
|
|
|
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
server: {
|
|
|
|
|
port: 5173,
|
|
|
|
|
proxy: {
|
|
|
|
|
// /api 로 시작하는 요청을 Spring Boot(8080)로 프록시
|
|
|
|
|
'/api': {
|
|
|
|
|
target: 'http://localhost:8080',
|
|
|
|
|
changeOrigin: true,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
},
|
2026-06-07 16:20:55 +09:00
|
|
|
}))
|