diff --git a/web/.env.example b/web/.env.example index 79d45bd0f9..2103f00f45 100644 --- a/web/.env.example +++ b/web/.env.example @@ -25,6 +25,11 @@ NEXT_PUBLIC_MARKETPLACE_URL_PREFIX=https://marketplace.dify.ai # SENTRY NEXT_PUBLIC_SENTRY_DSN= +# Build-time source map switch for production build +# Priority: ENABLE_SOURCE_MAP > ENABLE_PROD_SOURCEMAP +ENABLE_SOURCE_MAP= +ENABLE_PROD_SOURCEMAP=false + # Disable Next.js Telemetry (https://nextjs.org/telemetry) NEXT_TELEMETRY_DISABLED=1 diff --git a/web/Dockerfile b/web/Dockerfile index 38c2dc5aac..a27e5e91a8 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -14,6 +14,8 @@ ENV PNPM_HOME="/pnpm" ENV PATH="$PNPM_HOME:$PATH" ARG NEXT_PUBLIC_BASE_PATH="" ENV NEXT_PUBLIC_BASE_PATH="$NEXT_PUBLIC_BASE_PATH" +ARG ENABLE_SOURCE_MAP="" +ENV ENABLE_SOURCE_MAP="$ENABLE_SOURCE_MAP" ARG ENABLE_PROD_SOURCEMAP="false" ENV ENABLE_PROD_SOURCEMAP="$ENABLE_PROD_SOURCEMAP" diff --git a/web/next.config.ts b/web/next.config.ts index a7debda835..58505528c4 100644 --- a/web/next.config.ts +++ b/web/next.config.ts @@ -5,7 +5,18 @@ import createMDX from '@next/mdx' import { codeInspectorPlugin } from 'code-inspector-plugin' const isDev = process.env.NODE_ENV === 'development' -const enableProdSourceMaps = process.env.ENABLE_PROD_SOURCEMAP === 'true' +const parseBooleanEnv = (value: string | undefined): boolean | undefined => { + if (value === 'true') + return true + if (value === 'false') + return false + + return undefined +} + +const enableSourceMap = parseBooleanEnv(process.env.ENABLE_SOURCE_MAP) +const enableProdSourceMapsFallback = parseBooleanEnv(process.env.ENABLE_PROD_SOURCEMAP) ?? false +const enableProdSourceMaps = enableSourceMap ?? enableProdSourceMapsFallback const withMDX = createMDX({ extension: /\.mdx?$/, options: {