File size: 1,894 Bytes
94193b5 694282a 94193b5 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | import type { NextConfig } from 'next';
const nextConfig: NextConfig = {
output: 'standalone',
devIndicators: false,
// Externalize quickjs-emscripten packages to prevent webpack from mangling WASM loading
serverExternalPackages: [
'quickjs-emscripten',
'quickjs-emscripten-core',
'@jitl/quickjs-wasmfile-release-sync',
'esbuild-wasm',
'handlebars',
],
eslint: {
ignoreDuringBuilds: true,
},
typescript: {
// We'll handle TypeScript errors separately
ignoreBuildErrors: false,
},
webpack: (config, { isServer }) => {
config.watchOptions = {
...config.watchOptions,
ignored: ['**/e2e/**', '**/test-results/**', '**/node_modules/**'],
};
if (!isServer) {
config.resolve.alias = {
...config.resolve.alias,
'better-sqlite3': false,
};
// Also exclude native Node.js modules
config.resolve.fallback = {
...config.resolve.fallback,
fs: false,
path: false,
crypto: false,
};
}
return config;
},
async headers() {
return [
{
source: '/deployments/:path*',
headers: [
{ key: 'Cache-Control', value: 'public, max-age=3600' },
],
},
];
},
async rewrites() {
return [
// Handle published deployment URLs with standard web server behavior
// /deployments/{projectId}/ -> index.html
{
source: '/deployments/:projectId',
destination: '/deployments/:projectId/index.html',
},
{
source: '/deployments/:projectId/',
destination: '/deployments/:projectId/index.html',
},
// /deployments/{projectId}/page -> page.html (if no extension)
{
source: '/deployments/:projectId/:path([^.]+)',
destination: '/deployments/:projectId/:path.html',
},
];
},
};
export default nextConfig;
|