Files
cozsweet-frontend-nextjs/next.config.ts
T

102 lines
3.4 KiB
TypeScript

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,
},
},
});