53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
import { defineConfig } from "vite";
|
|
import react from "@vitejs/plugin-react";
|
|
|
|
// https://vite.dev/config/
|
|
export default defineConfig({
|
|
plugins: [react()],
|
|
server: {
|
|
// Security headers for development server
|
|
headers: {
|
|
"X-Content-Type-Options": "nosniff",
|
|
"X-Frame-Options": "DENY",
|
|
"X-XSS-Protection": "1; mode=block",
|
|
"Referrer-Policy": "strict-origin-when-cross-origin",
|
|
"Permissions-Policy": "geolocation=(), microphone=(), camera=()",
|
|
},
|
|
proxy: {
|
|
// Proxy all API requests to backend server
|
|
"/api": {
|
|
target: "http://localhost:8000",
|
|
changeOrigin: true,
|
|
secure: false,
|
|
},
|
|
// Legacy proxy for MapleFile API requests (kept for backward compatibility)
|
|
"/maplefile/api": {
|
|
target: "http://localhost:8000",
|
|
changeOrigin: true,
|
|
secure: false,
|
|
rewrite: (path) => path.replace(/^\/maplefile/, ""),
|
|
},
|
|
// Legacy proxy for IAM API requests (kept for backward compatibility)
|
|
"/iam/api": {
|
|
target: "http://localhost:8000",
|
|
changeOrigin: true,
|
|
secure: false,
|
|
rewrite: (path) => path.replace(/^\/iam/, ""),
|
|
},
|
|
},
|
|
},
|
|
// Production build security optimizations
|
|
build: {
|
|
// Enable minification for production (using esbuild)
|
|
minify: "esbuild",
|
|
// Generate source maps for debugging (but not inline)
|
|
sourcemap: false,
|
|
// Warn about large chunks
|
|
chunkSizeWarningLimit: 1000,
|
|
},
|
|
// Additional esbuild options for security
|
|
esbuild: {
|
|
// Remove console.log and debugger in production
|
|
drop: process.env.NODE_ENV === 'production' ? ['console', 'debugger'] : [],
|
|
},
|
|
});
|