next.config.mjs
1,287 bytes
| 1 | /** @type {import('next').NextConfig} */ |
|---|---|
| 2 | const nextConfig = { |
| 3 | // Emit a self-contained server bundle for the Docker runtime stage. Gated on |
| 4 | // an env flag because standalone tracing uses symlinks, which Windows dev |
| 5 | // machines block without Developer Mode — the Dockerfile sets this to '1'. |
| 6 | output: process.env.BUILD_STANDALONE === '1' ? 'standalone' : undefined, |
| 7 | reactStrictMode: true, |
| 8 | poweredByHeader: false, |
| 9 | // The debate SSE stream is long-lived (several minutes). Keep the server |
| 10 | // rendering lean and let route handlers own their own runtime config. |
| 11 | // Prisma is a native dependency; keep it external to the server bundle. |
| 12 | serverExternalPackages: ['@prisma/client', '@auth/prisma-adapter'], |
| 13 | eslint: { |
| 14 | // CI runs `next lint` explicitly; don't fail production builds on lint. |
| 15 | ignoreDuringBuilds: true, |
| 16 | }, |
| 17 | async headers() { |
| 18 | return [ |
| 19 | { |
| 20 | source: '/:path*', |
| 21 | headers: [ |
| 22 | { key: 'X-Content-Type-Options', value: 'nosniff' }, |
| 23 | { key: 'X-Frame-Options', value: 'SAMEORIGIN' }, |
| 24 | { key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' }, |
| 25 | { key: 'Permissions-Policy', value: 'camera=(), microphone=(), geolocation=()' }, |
| 26 | ], |
| 27 | }, |
| 28 | ]; |
| 29 | }, |
| 30 | }; |
| 31 | |
| 32 | export default nextConfig; |
| 33 | |