|
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 统一管理 |
@@ -150,4 +151,26 @@ const config = { |
150 | 151 | }, |
151 | 152 | }; |
152 | 153 |
|
153 | | -export default withNextIntl(withMDX(config)); |
| 154 | +const finalConfig = withNextIntl(withMDX(config)); |
| 155 | + |
| 156 | +// Sentry 包裹:webpack 插件需要看到最终的 Next 配置才能上传 source map。 |
| 157 | +// silent: !CI 让本地构建不刷日志,只在 Vercel CI 构建时打印。 |
| 158 | +// widenClientFileUpload 扩大 source map 扫描范围,保证前端错误堆栈能解出来。 |
| 159 | +// disableLogger 树摇掉 Sentry 自带 logger,减小 bundle 体积。 |
| 160 | +// |
| 161 | +// 守门条件:只有在存在 SENTRY_AUTH_TOKEN 时才启用 withSentryConfig。 |
| 162 | +// 贡献者 clone 仓库后没配 Sentry env 也能直接 `pnpm build` / `pnpm dev`, |
| 163 | +// 不会因为 webpack 插件缺凭据而构建失败。生产 Vercel 那边 env 齐全,正常上报。 |
| 164 | +const enableSentry = Boolean(process.env.SENTRY_AUTH_TOKEN); |
| 165 | + |
| 166 | +export default enableSentry |
| 167 | + ? withSentryConfig(finalConfig, { |
| 168 | + org: process.env.SENTRY_ORG || "involutionhell", |
| 169 | + project: process.env.SENTRY_PROJECT || "sentry-bole-notebook", |
| 170 | + silent: !process.env.CI, |
| 171 | + widenClientFileUpload: true, |
| 172 | + disableLogger: true, |
| 173 | + // 不启用 tunnelRoute:需要加 /monitoring rewrite,和现有 rewrites 交互 |
| 174 | + // 复杂;广告屏蔽对 docs 站影响小,后续真需要再打开。 |
| 175 | + }) |
| 176 | + : finalConfig; |
0 commit comments