From c3c612572449a2d5b93b146bc7e7972a2be91dce Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Wed, 21 Dec 2022 20:34:19 +0100 Subject: [PATCH 1/2] move modularizeImports out of experimental --- packages/next/build/swc/options.js | 2 +- packages/next/build/webpack-config.ts | 2 +- packages/next/server/config-schema.ts | 6 +++--- packages/next/server/config-shared.ts | 19 ++++++++++--------- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/next/build/swc/options.js b/packages/next/build/swc/options.js index 525cd7863d6..44a516746ca 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 463215a56fb..aac0b48403c 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -2304,7 +2304,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/server/config-schema.ts b/packages/next/server/config-schema.ts index 6cbfc8247cc..0005868f2b3 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 93f37ee8600..f0ebb26d1fb 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, From 277f91fb2b436ed96a756ac4d8033425c0822570 Mon Sep 17 00:00:00 2001 From: Shu Ding Date: Wed, 21 Dec 2022 21:07:41 +0100 Subject: [PATCH 2/2] add telemetry --- packages/next/build/webpack-config.ts | 1 + packages/next/build/webpack/plugins/telemetry-plugin.ts | 2 ++ packages/next/telemetry/events/build.ts | 1 + 3 files changed, 4 insertions(+) diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index aac0b48403c..17000d3e54d 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) ) diff --git a/packages/next/build/webpack/plugins/telemetry-plugin.ts b/packages/next/build/webpack/plugins/telemetry-plugin.ts index 1541db4333c..1f7891192f0 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/telemetry/events/build.ts b/packages/next/telemetry/events/build.ts index 45cbd6eb092..1e020ef5d2f 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(