// LEGACY_READ_ONLY: 旧域名只保留历史图片展示兼容。 /** @type {import('next').NextConfig} */ const nextConfig = { output: 'standalone', images: { remotePatterns: [ { protocol: 'https', hostname: 's3.1080p.hk', }, { protocol: 'http', hostname: 's3.1080p.hk', }, { protocol: 'https', hostname: 's3.yydd.ai', }, { protocol: 'http', hostname: 's3.yydd.ai', }, { protocol: 'https', hostname: 's3.jiansun.vip', }, { protocol: 'http', hostname: 's3.jiansun.vip', }, ], }, experimental: { // SQL Server 报表库同步需要在 standalone 镜像中保留 mssql 运行依赖。 serverComponentsExternalPackages: ['mssql'], // 优化 standalone 输出,排除不必要的文件 outputFileTracingExcludes: { '*': [ // 排除本地上传文件 'uploads/**', 'detail-generator-private/**', '.private/**', // The isolated renderer is copied explicitly by Docker with its own native dependencies. 'workers/detail-renderer/**', // 排除构建缓存 '.build-cache/**', '.docker-cache/**', // 排除开发工具 '.kiro/**', '.cursor/**', '.vscode/**', '.git/**', // 排除测试文件 '__tests__/**', '**/*.test.ts', '**/*.test.tsx', '**/*.spec.ts', '**/*.spec.tsx', // 排除文档和脚本 'docs/**', 'scripts/**', 'backups/**', // 排除 Prisma 不必要的文件 'prisma/migrations/**', 'prisma/engine-cache/**', // 排除部署脚本 '*.ps1', '*.sh', 'docker-compose*.yml', 'Dockerfile*', ], }, // 启用 instrumentation hook(应用启动时执行) instrumentationHook: true, serverActions: { bodySizeLimit: '10gb', // Server Actions 的限制 (10GB) }, }, // 注意:CORS配置移到middleware.ts中处理,因为需要动态设置origin // 当使用credentials时,不能使用通配符* // 添加版本号到静态资源文件名,强制浏览器更新 generateBuildId: async () => { // 使用时间戳作为构建ID,确保每次部署都有新的版本号 return `build-${Date.now()}` }, // 配置 headers 来禁用缓存 async headers() { return [ { source: '/:path*', headers: [ { key: 'X-Content-Type-Options', value: 'nosniff', }, { key: 'X-Frame-Options', value: 'SAMEORIGIN', }, { key: 'X-XSS-Protection', value: '1; mode=block', }, ], }, ] }, } module.exports = nextConfig