diff --git a/packages/next/build/swc/options.js b/packages/next/build/swc/options.js index 525cd7863d6a6..44a516746ca20 100644 --- a/packages/next/build/swc/options.js +++ b/packages/next/build/swc/options.js @@ -115,7 +115,7 @@ function getBaseSWCOptions({ reactRemoveProperties: jest ? false : nextConfig?.compiler?.reactRemoveProperties, - modularizeImports: nextConfig?.experimental?.modularizeImports, + modularizeImports: nextConfig?.modularizeImports, relay: nextConfig?.compiler?.relay, // Always transform styled-jsx and error when `client-only` condition is triggered styledJsx: true, diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 463215a56fb20..17000d3e54d41 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -2155,6 +2155,7 @@ export default async function getBaseWebpackConfig( !!config.skipMiddlewareUrlNormalize, ], ['skipTrailingSlashRedirect', !!config.skipTrailingSlashRedirect], + ['modularizeImports', !!config.modularizeImports], SWCBinaryTarget, ].filter<[Feature, boolean]>(Boolean as any) ) @@ -2304,7 +2305,7 @@ export default async function getBaseWebpackConfig( styledComponents: config.compiler?.styledComponents, relay: config.compiler?.relay, emotion: config.compiler?.emotion, - modularizeImports: config.experimental?.modularizeImports, + modularizeImports: config.modularizeImports, legacyBrowsers: config.experimental?.legacyBrowsers, imageLoaderFile: config.images.loaderFile, }) diff --git a/packages/next/build/webpack/plugins/telemetry-plugin.ts b/packages/next/build/webpack/plugins/telemetry-plugin.ts index 1541db4333ca2..1f7891192f087 100644 --- a/packages/next/build/webpack/plugins/telemetry-plugin.ts +++ b/packages/next/build/webpack/plugins/telemetry-plugin.ts @@ -40,6 +40,7 @@ export type Feature = | 'transpilePackages' | 'skipMiddlewareUrlNormalize' | 'skipTrailingSlashRedirect' + | 'modularizeImports' interface FeatureUsage { featureName: Feature @@ -102,6 +103,7 @@ const BUILD_FEATURES: Array = [ 'transpilePackages', 'skipMiddlewareUrlNormalize', 'skipTrailingSlashRedirect', + 'modularizeImports', ] const ELIMINATED_PACKAGES = new Set() diff --git a/packages/next/server/config-schema.ts b/packages/next/server/config-schema.ts index 6cbfc8247cc38..0005868f2b310 100644 --- a/packages/next/server/config-schema.ts +++ b/packages/next/server/config-schema.ts @@ -310,9 +310,6 @@ const configSchema = { enum: ['strict', 'flexible'] as any, type: 'string', }, - modularizeImports: { - type: 'object', - }, newNextLinkBehavior: { type: 'boolean', }, @@ -629,6 +626,9 @@ const configSchema = { }, type: 'object', }, + modularizeImports: { + type: 'object', + }, onDemandEntries: { additionalProperties: false, properties: { diff --git a/packages/next/server/config-shared.ts b/packages/next/server/config-shared.ts index 93f37ee860011..f0ebb26d1fbe7 100644 --- a/packages/next/server/config-shared.ts +++ b/packages/next/server/config-shared.ts @@ -120,14 +120,6 @@ export interface ExperimentalConfig { urlImports?: NonNullable['buildHttp'] outputFileTracingRoot?: string outputFileTracingIgnores?: string[] - modularizeImports?: Record< - string, - { - transform: string - preventFullImport?: boolean - skipDefaultConversion?: boolean - } - > swcTraceProfiling?: boolean forceSwcTransforms?: boolean @@ -508,6 +500,15 @@ export interface NextConfig extends Record { skipTrailingSlashRedirect?: boolean + modularizeImports?: Record< + string, + { + transform: string + preventFullImport?: boolean + skipDefaultConversion?: boolean + } + > + /** * Enable experimental features. Note that all experimental features are subject to breaking changes in the future. */ @@ -566,6 +567,7 @@ export const defaultConfig: NextConfig = { staticPageGenerationTimeout: 60, swcMinify: true, output: !!process.env.NEXT_PRIVATE_STANDALONE ? 'standalone' : undefined, + modularizeImports: undefined, experimental: { fetchCache: false, middlewarePrefetch: 'flexible', @@ -608,7 +610,6 @@ export const defaultConfig: NextConfig = { disablePostcssPresetEnv: undefined, amp: undefined, urlImports: undefined, - modularizeImports: undefined, enableUndici: false, adjustFontFallbacks: false, adjustFontFallbacksWithSizeAdjust: false, diff --git a/packages/next/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index 45cbd6eb0926f..1e020ef5d2fd2 100644 --- a/packages/next/telemetry/events/build.ts +++ b/packages/next/telemetry/events/build.ts @@ -169,6 +169,7 @@ export type EventBuildFeatureUsage = { | 'transpilePackages' | 'skipMiddlewareUrlNormalize' | 'skipTrailingSlashRedirect' + | 'modularizeImports' invocationCount: number } export function eventBuildFeatureUsage(