gc-wing/apps/web/vite.config.ts
htlee e72e2f14f6 feat(ship-image): 선박 이미지 썸네일 및 갤러리 기능
- AIS 타겟에 shipImagePath/shipImageCount 필드 추가
- 선박 이미지 API 연동 (fetchShipImagesByImo)
- 지도 위 사진 인디케이터 (ScatterplotLayer)
- 호버 툴팁에 썸네일 표시
- 정보 패널 카드 갤러리 (스크롤+화살표)
- 고화질 이미지 모달 (initialIndex 지원)
- Vite 프록시 /shipimg 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-20 03:45:25 +09:00

53 lines
1.9 KiB
TypeScript

import tailwindcss from "@tailwindcss/vite";
import react from "@vitejs/plugin-react";
import { fileURLToPath } from "node:url";
import { defineConfig, loadEnv } from "vite";
// https://vite.dev/config/
export default defineConfig(({ mode }) => {
const env = loadEnv(mode, process.cwd(), "");
const webPort = Number(env.WEB_PORT || process.env.WEB_PORT || 5175);
const apiPort = Number(env.API_PORT || process.env.API_PORT || 5174);
// dev: use Vite proxy → upstream
// prod: set VITE_API_URL to absolute base if needed
const signalBatchTarget = env.VITE_SIGNAL_BATCH_TARGET || process.env.VITE_SIGNAL_BATCH_TARGET || "https://wing.gc-si.dev";
return {
plugins: [tailwindcss(), react()],
resolve: {
alias: {
// deck.gl (via loaders.gl) contains a few Node-only helper modules.
// In browser builds, they should be tree-shaken, but Vite/Rollup may still warn.
child_process: fileURLToPath(new URL("./src/shared/shims/child_process.ts", import.meta.url)),
},
},
server: {
// IMPORTANT: keep the web dev server port fixed so it doesn't collide with the API server port.
// If the port is already taken, fail fast instead of auto-falling-back to the API port (proxy loop -> 500).
port: webPort,
strictPort: true,
proxy: {
// Optional local API server (future DB-backed APIs etc).
"/api": {
target: `http://127.0.0.1:${apiPort}`,
changeOrigin: true,
},
// signal-batch API (선박 위치/항적)
"/signal-batch": {
target: signalBatchTarget,
changeOrigin: true,
secure: false,
},
// 선박 이미지 정적 파일 (nginx alias /pgdata/shipimg/)
"/shipimg": {
target: signalBatchTarget,
changeOrigin: true,
secure: false,
},
},
},
};
});