|
1 | 1 | // next.config.mjs |
2 | 2 | import { createMDX } from "fumadocs-mdx/next"; |
3 | 3 | import createNextIntlPlugin from "next-intl/plugin"; |
| 4 | +import { withSentryConfig } from "@sentry/nextjs"; |
4 | 5 |
|
5 | 6 | /** |
6 | 7 | * IMPORTANT: remarkImage 配置已移至 source.config.ts 统一管理 |
@@ -131,4 +132,26 @@ const config = { |
131 | 132 | }, |
132 | 133 | }; |
133 | 134 |
|
134 | | -export default withNextIntl(withMDX(config)); |
| 135 | +const finalConfig = withNextIntl(withMDX(config)); |
| 136 | + |
| 137 | +// Sentry 包裹:webpack 插件需要看到最终的 Next 配置才能上传 source map。 |
| 138 | +// silent: !CI 让本地构建不刷日志,只在 Vercel CI 构建时打印。 |
| 139 | +// widenClientFileUpload 扩大 source map 扫描范围,保证前端错误堆栈能解出来。 |
| 140 | +// disableLogger 树摇掉 Sentry 自带 logger,减小 bundle 体积。 |
| 141 | +// |
| 142 | +// 守门条件:只有在存在 SENTRY_AUTH_TOKEN 时才启用 withSentryConfig。 |
| 143 | +// 贡献者 clone 仓库后没配 Sentry env 也能直接 `pnpm build` / `pnpm dev`, |
| 144 | +// 不会因为 webpack 插件缺凭据而构建失败。生产 Vercel 那边 env 齐全,正常上报。 |
| 145 | +const enableSentry = Boolean(process.env.SENTRY_AUTH_TOKEN); |
| 146 | + |
| 147 | +export default enableSentry |
| 148 | + ? withSentryConfig(finalConfig, { |
| 149 | + org: process.env.SENTRY_ORG || "involutionhell", |
| 150 | + project: process.env.SENTRY_PROJECT || "sentry-bole-notebook", |
| 151 | + silent: !process.env.CI, |
| 152 | + widenClientFileUpload: true, |
| 153 | + disableLogger: true, |
| 154 | + // 不启用 tunnelRoute:需要加 /monitoring rewrite,和现有 rewrites 交互 |
| 155 | + // 复杂;广告屏蔽对 docs 站影响小,后续真需要再打开。 |
| 156 | + }) |
| 157 | + : finalConfig; |
0 commit comments