92 lines
3.0 KiB
TypeScript
92 lines
3.0 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`,仅复制 standalone traced runtime 依赖。
|
|
*/
|
|
const nextConfig: NextConfig = {
|
|
output: "standalone",
|
|
experimental: {
|
|
// 关闭静态优化以规避 16.2.7 global-error prerender bug
|
|
staticGenerationRetryCount: 0,
|
|
},
|
|
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,
|
|
},
|
|
},
|
|
});
|