123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421 |
- import type { webpack } from 'next/dist/compiled/webpack/webpack';
- import type { Header, Redirect, Rewrite } from '../lib/load-custom-routes';
- import { ImageConfig, ImageConfigComplete } from '../shared/lib/image-config';
- import { ServerRuntime } from 'next/types';
- import { SubresourceIntegrityAlgorithm } from '../build/webpack/plugins/subresource-integrity-plugin';
- export declare type NextConfigComplete = Required<NextConfig> & {
- images: Required<ImageConfigComplete>;
- typescript: Required<TypeScriptConfig>;
- configOrigin?: string;
- configFile?: string;
- configFileName: string;
- };
- export interface I18NConfig {
- defaultLocale: string;
- domains?: DomainLocale[];
- localeDetection?: false;
- locales: string[];
- }
- export interface DomainLocale {
- defaultLocale: string;
- domain: string;
- http?: true;
- locales?: string[];
- }
- export interface ESLintConfig {
- /** Only run ESLint on these directories with `next lint` and `next build`. */
- dirs?: string[];
- /** Do not run ESLint during production builds (`next build`). */
- ignoreDuringBuilds?: boolean;
- }
- export interface TypeScriptConfig {
- /** Do not run TypeScript during production builds (`next build`). */
- ignoreBuildErrors?: boolean;
- /** Relative path to a custom tsconfig file */
- tsconfigPath?: string;
- }
- export interface WebpackConfigContext {
- /** Next.js root directory */
- dir: string;
- /** Indicates if the compilation will be done in development */
- dev: boolean;
- /** It's `true` for server-side compilation, and `false` for client-side compilation */
- isServer: boolean;
- /** The build id, used as a unique identifier between builds */
- buildId: string;
- /** The next.config.js merged with default values */
- config: NextConfigComplete;
- /** Default loaders used internally by Next.js */
- defaultLoaders: {
- /** Default babel-loader configuration */
- babel: any;
- };
- /** Number of total Next.js pages */
- totalPages: number;
- /** The webpack configuration */
- webpack: any;
- /** The current server runtime */
- nextRuntime?: 'nodejs' | 'edge';
- }
- export interface NextJsWebpackConfig {
- (
- /** Existing Webpack config */
- config: any, context: WebpackConfigContext): any;
- }
- export interface ExperimentalConfig {
- allowMiddlewareResponseBody?: boolean;
- skipMiddlewareUrlNormalize?: boolean;
- skipTrailingSlashRedirect?: boolean;
- optimisticClientCache?: boolean;
- legacyBrowsers?: boolean;
- browsersListForSwc?: boolean;
- manualClientBasePath?: boolean;
- newNextLinkBehavior?: boolean;
- incrementalCacheHandlerPath?: string;
- disablePostcssPresetEnv?: boolean;
- swcMinify?: boolean;
- swcFileReading?: boolean;
- cpus?: number;
- sharedPool?: boolean;
- profiling?: boolean;
- proxyTimeout?: number;
- isrFlushToDisk?: boolean;
- workerThreads?: boolean;
- pageEnv?: boolean;
- optimizeCss?: boolean | Record<string, unknown>;
- nextScriptWorkers?: boolean;
- scrollRestoration?: boolean;
- externalDir?: boolean;
- appDir?: boolean;
- amp?: {
- optimizer?: any;
- validator?: string;
- skipValidation?: boolean;
- };
- disableOptimizedLoading?: boolean;
- gzipSize?: boolean;
- craCompat?: boolean;
- esmExternals?: boolean | 'loose';
- isrMemoryCacheSize?: number;
- runtime?: Exclude<ServerRuntime, undefined>;
- serverComponents?: boolean;
- fullySpecified?: boolean;
- urlImports?: NonNullable<webpack.Configuration['experiments']>['buildHttp'];
- outputFileTracingRoot?: string;
- modularizeImports?: Record<string, {
- transform: string;
- preventFullImport?: boolean;
- skipDefaultConversion?: boolean;
- }>;
- swcTraceProfiling?: boolean;
- forceSwcTransforms?: boolean;
- /**
- * The option for the minifier of [SWC compiler](https://swc.rs).
- * This option is only for debugging the SWC minifier, and will be removed once the SWC minifier is stable.
- *
- * @see [SWC Minification](https://nextjs.org/docs/advanced-features/compiler#minification)
- */
- swcMinifyDebugOptions?: {
- compress?: object;
- mangle?: object;
- };
- swcPlugins?: Array<[string, Record<string, unknown>]>;
- largePageDataBytes?: number;
- /**
- * If set to `false`, webpack won't fall back to polyfill Node.js modules in the browser
- * Full list of old polyfills is accessible here:
- * [webpack/webpack#ModuleNotoundError.js#L13-L42](https://github.com/webpack/webpack/blob/2a0536cf510768111a3a6dceeb14cb79b9f59273/lib/ModuleNotFoundError.js#L13-L42)
- */
- fallbackNodePolyfills?: false;
- sri?: {
- algorithm?: SubresourceIntegrityAlgorithm;
- };
- adjustFontFallbacks?: boolean;
- }
- export declare type ExportPathMap = {
- [path: string]: {
- page: string;
- query?: Record<string, string | string[]>;
- };
- };
- /**
- * Next configuration object
- * @see [configuration documentation](https://nextjs.org/docs/api-reference/next.config.js/introduction)
- */
- export interface NextConfig extends Record<string, any> {
- exportPathMap?: (defaultMap: ExportPathMap, ctx: {
- dev: boolean;
- dir: string;
- outDir: string | null;
- distDir: string;
- buildId: string;
- }) => Promise<ExportPathMap> | ExportPathMap;
- /**
- * Internationalization configuration
- *
- * @see [Internationalization docs](https://nextjs.org/docs/advanced-features/i18n-routing)
- */
- i18n?: I18NConfig | null;
- /**
- * @since version 11
- * @see [ESLint configuration](https://nextjs.org/docs/basic-features/eslint)
- */
- eslint?: ESLintConfig;
- /**
- * @see [Next.js TypeScript documentation](https://nextjs.org/docs/basic-features/typescript)
- */
- typescript?: TypeScriptConfig;
- /**
- * Headers allow you to set custom HTTP headers for an incoming request path.
- *
- * @see [Headers configuration documentation](https://nextjs.org/docs/api-reference/next.config.js/headers)
- */
- headers?: () => Promise<Header[]>;
- /**
- * Rewrites allow you to map an incoming request path to a different destination path.
- *
- * @see [Rewrites configuration documentation](https://nextjs.org/docs/api-reference/next.config.js/rewrites)
- */
- rewrites?: () => Promise<Rewrite[] | {
- beforeFiles: Rewrite[];
- afterFiles: Rewrite[];
- fallback: Rewrite[];
- }>;
- /**
- * Redirects allow you to redirect an incoming request path to a different destination path.
- *
- * @see [Redirects configuration documentation](https://nextjs.org/docs/api-reference/next.config.js/redirects)
- */
- redirects?: () => Promise<Redirect[]>;
- /**
- * @deprecated This option has been removed as webpack 5 is now default
- * @see [Next.js webpack 5 documentation](https://nextjs.org/docs/messages/webpack5) for upgrading guidance.
- */
- webpack5?: false;
- /**
- * @see [Moment.js locales excluded by default](https://nextjs.org/docs/upgrading#momentjs-locales-excluded-by-default)
- */
- excludeDefaultMomentLocales?: boolean;
- /**
- * Before continuing to add custom webpack configuration to your application make sure Next.js doesn't already support your use-case
- *
- * @see [Custom Webpack Config documentation](https://nextjs.org/docs/api-reference/next.config.js/custom-webpack-config)
- */
- webpack?: NextJsWebpackConfig | null;
- /**
- * By default Next.js will redirect urls with trailing slashes to their counterpart without a trailing slash.
- *
- * @default false
- * @see [Trailing Slash Configuration](https://nextjs.org/docs/api-reference/next.config.js/trailing-slash)
- */
- trailingSlash?: boolean;
- /**
- * Next.js comes with built-in support for environment variables
- *
- * @see [Environment Variables documentation](https://nextjs.org/docs/api-reference/next.config.js/environment-variables)
- */
- env?: Record<string, string>;
- /**
- * Destination directory (defaults to `.next`)
- */
- distDir?: string;
- /**
- * The build output directory (defaults to `.next`) is now cleared by default except for the Next.js caches.
- */
- cleanDistDir?: boolean;
- /**
- * To set up a CDN, you can set up an asset prefix and configure your CDN's origin to resolve to the domain that Next.js is hosted on.
- *
- * @see [CDN Support with Asset Prefix](https://nextjs.org/docs/api-reference/next.config.js/cdn-support-with-asset-prefix)
- */
- assetPrefix?: string;
- /**
- * By default, `Next` will serve each file in the `pages` folder under a pathname matching the filename.
- * To disable this behavior and prevent routing based set this to `true`.
- *
- * @default true
- * @see [Disabling file-system routing](https://nextjs.org/docs/advanced-features/custom-server#disabling-file-system-routing)
- */
- useFileSystemPublicRoutes?: boolean;
- /**
- * @see [Configuring the build ID](https://nextjs.org/docs/api-reference/next.config.js/configuring-the-build-id)
- */
- generateBuildId?: () => string | null | Promise<string | null>;
- /** @see [Disabling ETag Configuration](https://nextjs.org/docs/api-reference/next.config.js/disabling-etag-generation) */
- generateEtags?: boolean;
- /** @see [Including non-page files in the pages directory](https://nextjs.org/docs/api-reference/next.config.js/custom-page-extensions) */
- pageExtensions?: string[];
- /** @see [Compression documentation](https://nextjs.org/docs/api-reference/next.config.js/compression) */
- compress?: boolean;
- /**
- * The field should only be used when a Next.js project is not hosted on Vercel while using Vercel Analytics.
- * Vercel provides zero-configuration analytics for Next.js projects hosted on Vercel.
- *
- * @default ''
- * @see [Next.js Analytics](https://nextjs.org/analytics)
- */
- analyticsId?: string;
- /** @see [Disabling x-powered-by](https://nextjs.org/docs/api-reference/next.config.js/disabling-x-powered-by) */
- poweredByHeader?: boolean;
- /** @see [Using the Image Component](https://nextjs.org/docs/basic-features/image-optimization#using-the-image-component) */
- images?: ImageConfig;
- /** Configure indicators in development environment */
- devIndicators?: {
- /** Show "building..."" indicator in development */
- buildActivity?: boolean;
- /** Position of "building..." indicator in browser */
- buildActivityPosition?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left';
- };
- /**
- * Next.js exposes some options that give you some control over how the server will dispose or keep in memory built pages in development.
- *
- * @see [Configuring `onDemandEntries`](https://nextjs.org/docs/api-reference/next.config.js/configuring-onDemandEntries)
- */
- onDemandEntries?: {
- /** period (in ms) where the server will keep pages in the buffer */
- maxInactiveAge?: number;
- /** number of pages that should be kept simultaneously without being disposed */
- pagesBufferLength?: number;
- };
- /** @see [`next/amp`](https://nextjs.org/docs/api-reference/next/amp) */
- amp?: {
- canonicalBase?: string;
- };
- /**
- * Deploy a Next.js application under a sub-path of a domain
- *
- * @see [Base path configuration](https://nextjs.org/docs/api-reference/next.config.js/basepath)
- */
- basePath?: string;
- /** @see [Customizing sass options](https://nextjs.org/docs/basic-features/built-in-css-support#customizing-sass-options) */
- sassOptions?: {
- [key: string]: any;
- };
- /**
- * Enable browser source map generation during the production build
- *
- * @see [Source Maps](https://nextjs.org/docs/advanced-features/source-maps)
- */
- productionBrowserSourceMaps?: boolean;
- /**
- * By default, Next.js will automatically inline font CSS at build time
- *
- * @default true
- * @since version 10.2
- * @see [Font Optimization](https://nextjs.org/docs/basic-features/font-optimization)
- */
- optimizeFonts?: boolean;
- /**
- * The Next.js runtime is Strict Mode-compliant.
- *
- * @see [React Strict Mode](https://nextjs.org/docs/api-reference/next.config.js/react-strict-mode)
- */
- reactStrictMode?: boolean;
- /**
- * Add public (in browser) runtime configuration to your app
- *
- * @see [Runtime configuration](https://nextjs.org/docs/api-reference/next.config.js/runtime-configuration)
- */
- publicRuntimeConfig?: {
- [key: string]: any;
- };
- /**
- * Add server runtime configuration to your app
- *
- * @see [Runtime configuration](https://nextjs.org/docs/api-reference/next.config.js/runtime-configuration)
- */
- serverRuntimeConfig?: {
- [key: string]: any;
- };
- /**
- * Next.js automatically polyfills node-fetch and enables HTTP Keep-Alive by default.
- * You may want to disable HTTP Keep-Alive for certain `fetch()` calls or globally.
- *
- * @see [Disabling HTTP Keep-Alive](https://nextjs.org/docs/api-reference/next.config.js/disabling-http-keep-alive)
- */
- httpAgentOptions?: {
- keepAlive?: boolean;
- };
- future?: {
- /**
- * @deprecated This option has been removed as webpack 5 is now default
- */
- webpack5?: false;
- };
- /**
- * During a build, Next.js will automatically trace each page and its dependencies to determine all of the files
- * that are needed for deploying a production version of your application.
- *
- * @see [Output File Tracing](https://nextjs.org/docs/advanced-features/output-file-tracing)
- */
- outputFileTracing?: boolean;
- /**
- * Timeout after waiting to generate static pages in seconds
- *
- * @default 60
- */
- staticPageGenerationTimeout?: number;
- /**
- * Add `"crossorigin"` attribute to generated `<script>` elements generated by `<Head />` or `<NextScript />` components
- *
- *
- * @see [`crossorigin` attribute documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/crossorigin)
- */
- crossOrigin?: false | 'anonymous' | 'use-credentials';
- /**
- * Use [SWC compiler](https://swc.rs) to minify the generated JavaScript
- *
- * @see [SWC Minification](https://nextjs.org/docs/advanced-features/compiler#minification)
- */
- swcMinify?: boolean;
- /**
- * Optionally enable compiler transforms
- *
- * @see [Supported Compiler Options](https://nextjs.org/docs/advanced-features/compiler#supported-features)
- */
- compiler?: {
- reactRemoveProperties?: boolean | {
- properties?: string[];
- };
- relay?: {
- src: string;
- artifactDirectory?: string;
- language?: 'typescript' | 'flow';
- };
- removeConsole?: boolean | {
- exclude?: string[];
- };
- styledComponents?: boolean | {
- /**
- * Enabled by default in development, disabled in production to reduce file size,
- * setting this will override the default for all environments.
- */
- displayName?: boolean;
- topLevelImportPaths?: string[];
- ssr?: boolean;
- fileName?: boolean;
- meaninglessFileNames?: string[];
- minify?: boolean;
- transpileTemplateLiterals?: boolean;
- namespace?: string;
- pure?: boolean;
- cssProp?: boolean;
- };
- emotion?: boolean | {
- sourceMap?: boolean;
- autoLabel?: 'dev-only' | 'always' | 'never';
- labelFormat?: string;
- };
- };
- output?: 'standalone';
- /**
- * Enable experimental features. Note that all experimental features are subject to breaking changes in the future.
- */
- experimental?: ExperimentalConfig;
- }
- export declare const defaultConfig: NextConfig;
- export declare function normalizeConfig(phase: string, config: any): Promise<any>;
- export declare function isServerRuntime(value?: string): value is ServerRuntime;
- export declare function validateConfig(userConfig: NextConfig): {
- errors?: Array<any> | null;
- };
|