42 lines
1.5 KiB
JavaScript
42 lines
1.5 KiB
JavaScript
const { withSentryConfig } = require('@sentry/nextjs')
|
||
const createNextIntlPlugin = require('next-intl/plugin')
|
||
|
||
const withNextIntl = createNextIntlPlugin('./src/i18n/request.ts')
|
||
|
||
/** @type {import('next').NextConfig} */
|
||
const nextConfig = {
|
||
reactStrictMode: true,
|
||
transpilePackages: ['@awoooi/lewooogo-core'],
|
||
output: 'standalone',
|
||
experimental: {
|
||
typedRoutes: true,
|
||
},
|
||
// CI/CD: ESLint 在獨立 lint job 執行,build 時跳過
|
||
eslint: {
|
||
ignoreDuringBuilds: true,
|
||
},
|
||
// CI/CD: TypeScript 錯誤在獨立 type-check job 處理
|
||
typescript: {
|
||
ignoreBuildErrors: true,
|
||
},
|
||
// Sprint 5: 舊路由暫不 redirect
|
||
// 原因: 整合頁面用 lazy import 載入原始頁面,redirect 會造成循環
|
||
// 策略: 舊路由保持獨立可用,新路由是整合入口
|
||
// 未來: 統帥確認無問題後,可逐步加入 redirect
|
||
}
|
||
|
||
// Sentry 配置 (Self-Hosted 內部來源(僅 runtime))
|
||
const sentryWebpackPluginOptions = {
|
||
// 只在有 AUTH_TOKEN 時上傳 source maps
|
||
silent: true,
|
||
// 組織與專案 (Self-Hosted 設定)
|
||
org: process.env.SENTRY_ORG || 'awoooi',
|
||
project: process.env.SENTRY_PROJECT || 'awoooi-web',
|
||
// 禁用自動 source map 上傳 (Self-Hosted 需手動配置)
|
||
disableServerWebpackPlugin: !process.env.SENTRY_AUTH_TOKEN,
|
||
disableClientWebpackPlugin: !process.env.SENTRY_AUTH_TOKEN,
|
||
}
|
||
|
||
// 組合: next-intl → sentry
|
||
module.exports = withSentryConfig(withNextIntl(nextConfig), sentryWebpackPluginOptions)
|