diff --git a/packages/next/export/index.ts b/packages/next/export/index.ts index 8b28637fd0482aa..ea2351728c0e232 100644 --- a/packages/next/export/index.ts +++ b/packages/next/export/index.ts @@ -30,7 +30,7 @@ import { } from '../shared/lib/constants' import loadConfig from '../server/config' import { isTargetLikeServerless } from '../server/utils' -import { NextConfigComplete } from '../server/config-shared' +import { ExportPathMap, NextConfigComplete } from '../server/config-shared' import { eventCliSession } from '../telemetry/events' import { hasNextSupport } from '../telemetry/ci-info' import { Telemetry } from '../telemetry/storage' @@ -124,10 +124,6 @@ const createProgress = (total: number, label: string) => { } } -type ExportPathMap = { - [page: string]: { page: string; query?: { [key: string]: string } } -} - interface ExportOptions { outdir: string silent?: boolean @@ -318,7 +314,7 @@ export default async function exportApp( `No "exportPathMap" found in "${nextConfig.configFile}". Generating map from "./pages"` ) } - nextConfig.exportPathMap = async (defaultMap: ExportPathMap) => { + nextConfig.exportPathMap = async (defaultMap) => { return defaultMap } } diff --git a/packages/next/server/config-schema.ts b/packages/next/server/config-schema.ts index fccfc70e8ac32f6..f1808b8497e9059 100644 --- a/packages/next/server/config-schema.ts +++ b/packages/next/server/config-schema.ts @@ -391,6 +391,9 @@ const configSchema = { }, type: 'object', }, + exportPathMap: { + isFunction: true, + } as any, future: { additionalProperties: false, properties: {}, diff --git a/packages/next/server/config-shared.ts b/packages/next/server/config-shared.ts index 55dd0a7228506b0..e0999cba59b503b 100644 --- a/packages/next/server/config-shared.ts +++ b/packages/next/server/config-shared.ts @@ -148,11 +148,26 @@ export interface ExperimentalConfig { largePageDataBytes?: number } +export type ExportPathMap = { + [path: string]: { page: string; query?: Record } +} + /** * Next configuration object * @see [configuration documentation](https://nextjs.org/docs/api-reference/next.config.js/introduction) */ export interface NextConfig extends Record { + exportPathMap?: ( + defaultMap: ExportPathMap, + ctx: { + dev: boolean + dir: string + outDir: string | null + distDir: string + buildId: string + } + ) => Promise | ExportPathMap + /** * Internationalization configuration *