import { withSentryConfig } from "@sentry/nextjs"; import type { NextConfig } from "next"; import { withSerwist } from "@serwist/turbopack"; /** * Next.js 16 临时绕过 `/_global-error` prerender 的 workStore bug * 标记根 layout 不参与静态预渲染(global-error 会在请求时渲染) * https://nextjs.org/docs/app/api-reference/file-conventions/route-segment-config * * 容器化部署模型:`output: "standalone"` + Docker Compose。 * - `pnpm build` 产出 .next/standalone、.next/static、public。 * - Dockerfile 运行 `node server.js`,不再依赖 `next start` 和完整 node_modules。 */ const nextConfig: NextConfig = { output: "standalone", experimental: { // 关闭静态优化以规避 16.2.7 global-error prerender bug staticGenerationRetryCount: 0, }, outputFileTracingIncludes: { "/serwist/*": [ "./src/app/sw.ts", "./node_modules/.pnpm/@serwist+*/node_modules/@serwist/**/*", "./node_modules/.pnpm/idb@*/node_modules/idb/**/*", "./node_modules/.pnpm/serwist@*/node_modules/serwist/**/*", "./node_modules/.pnpm/esbuild@*/node_modules/esbuild/**/*", "./node_modules/.pnpm/@esbuild+linux-*@*/node_modules/@esbuild/linux-*/**/*", ], }, images: { remotePatterns: [ { protocol: "https", hostname: "platform-lookaside.fbsbx.com", }, { protocol: "https", hostname: "graph.facebook.com", }, { protocol: "https", hostname: "**.supabase.co", pathname: "/storage/v1/object/public/**", }, { protocol: "https", hostname: "free.picui.cn", }, ], }, }; const shouldUploadSentrySourcemaps = process.env.CI !== "true" || process.env.SENTRY_UPLOAD_SOURCEMAPS === "1"; export default withSentryConfig(withSerwist(nextConfig), { // For all available options, see: // https://www.npmjs.com/package/@sentry/webpack-plugin#options org: "shenzhen-banlv-zhidao-technolo", project: "javascript-nextjs", // Only print logs for uploading source maps in CI silent: !process.env.CI, // Keep build metadata local; application errors/performance are configured separately. telemetry: false, // For all available options, see: // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, // PR/branch CI should validate builds without uploading source maps. Release jobs can // set SENTRY_UPLOAD_SOURCEMAPS=1 to enable uploads explicitly. sourcemaps: { disable: !shouldUploadSentrySourcemaps, }, // Uncomment to route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. // This can increase your server load as well as your hosting bill. // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- // side errors will fail. // tunnelRoute: "/monitoring", webpack: { // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) // See the following for more information: // https://docs.sentry.io/product/crons/ // https://vercel.com/docs/cron-jobs automaticVercelMonitors: true, // Tree-shaking options for reducing bundle size treeshake: { // Automatically tree-shake Sentry logger statements to reduce bundle size removeDebugLogging: true, }, }, });