From c47e2aec28006fcd71ee68262d751bce8d7cf5c9 Mon Sep 17 00:00:00 2001 From: JJ Kasper Date: Wed, 24 Mar 2021 15:16:53 -0500 Subject: [PATCH] Update serial mode to be behind config --- packages/next/build/index.ts | 45 +++++++++++-------- .../next/next-server/server/config-shared.ts | 1 + 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/packages/next/build/index.ts b/packages/next/build/index.ts index 19a3ca6485de5..e395bc44cfc1d 100644 --- a/packages/next/build/index.ts +++ b/packages/next/build/index.ts @@ -511,26 +511,33 @@ export default async function build( const webpackBuildStart = process.hrtime() let result: CompilerResult = { warnings: [], errors: [] } - // we run client and server compilation separately for memory and for - // serverless to be able to load manifests produced in previous build - await nextBuildSpan - .traceChild('run-webpack-compiler') - .traceAsyncFn(async () => { - const clientResult = await runCompiler(clientConfig) - // Fail build if clientResult contains errors - if (clientResult.errors.length > 0) { - result = { - warnings: [...clientResult.warnings], - errors: [...clientResult.errors], - } - } else { - const serverResult = await runCompiler(configs[1]) - result = { - warnings: [...clientResult.warnings, ...serverResult.warnings], - errors: [...clientResult.errors, ...serverResult.errors], + // We run client and server compilation separately when configured for + // memory constraint and for serverless to be able to load manifests + // produced in the client build + if (isLikeServerless || config.expeirmental.serialWebpackBuild) { + await nextBuildSpan + .traceChild('run-webpack-compiler') + .traceAsyncFn(async () => { + const clientResult = await runCompiler(clientConfig) + // Fail build if clientResult contains errors + if (clientResult.errors.length > 0) { + result = { + warnings: [...clientResult.warnings], + errors: [...clientResult.errors], + } + } else { + const serverResult = await runCompiler(configs[1]) + result = { + warnings: [...clientResult.warnings, ...serverResult.warnings], + errors: [...clientResult.errors, ...serverResult.errors], + } } - } - }) + }) + } else { + result = await nextBuildSpan + .traceChild('run-webpack-compiler') + .traceAsyncFn(() => runCompiler(configs)) + } const webpackBuildEnd = process.hrtime(webpackBuildStart) if (buildSpinner) { diff --git a/packages/next/next-server/server/config-shared.ts b/packages/next/next-server/server/config-shared.ts index 196973e5709bb..a7776ce1d1b4b 100644 --- a/packages/next/next-server/server/config-shared.ts +++ b/packages/next/next-server/server/config-shared.ts @@ -80,6 +80,7 @@ export const defaultConfig: NextConfig = { scriptLoader: false, stats: false, externalDir: false, + serialWebpackBuild: false, }, future: { strictPostcssConfiguration: false,