diff --git a/packages/next/build/webpack-config.ts b/packages/next/build/webpack-config.ts index 44582f75fda0cbf..873a0d1cc20dc3a 100644 --- a/packages/next/build/webpack-config.ts +++ b/packages/next/build/webpack-config.ts @@ -434,17 +434,11 @@ export default async function getBaseWebpackConfig( cacheGroups: { default: false, vendors: false, - // In webpack 5 vendors was renamed to defaultVendors - defaultVendors: false, }, }, prodGranular: { chunks: 'all', cacheGroups: { - default: false, - vendors: false, - // In webpack 5 vendors was renamed to defaultVendors - defaultVendors: false, framework: { chunks: 'all', name: 'framework', @@ -458,10 +452,13 @@ export default async function getBaseWebpackConfig( enforce: true, }, lib: { - test(module: { size: Function; identifier: Function }): boolean { + test(module: { + size: Function + nameForCondition: Function + }): boolean { return ( module.size() > 160000 && - /node_modules[/\\]/.test(module.identifier()) + /node_modules[/\\]/.test(module.nameForCondition() || '') ) }, name(module: { @@ -493,26 +490,32 @@ export default async function getBaseWebpackConfig( minChunks: totalPages, priority: 20, }, - shared: { - name(module, chunks) { - return ( - crypto - .createHash('sha1') - .update( - chunks.reduce( - (acc: string, chunk: webpack.compilation.Chunk) => { - return acc + chunk.name - }, - '' + ...(isWebpack5 + ? undefined + : { + default: false, + vendors: false, + shared: { + name(module, chunks) { + return ( + crypto + .createHash('sha1') + .update( + chunks.reduce( + (acc: string, chunk: webpack.compilation.Chunk) => { + return acc + chunk.name + }, + '' + ) + ) + .digest('hex') + (isModuleCSS(module) ? '_CSS' : '') ) - ) - .digest('hex') + (isModuleCSS(module) ? '_CSS' : '') - ) - }, - priority: 10, - minChunks: 2, - reuseExistingChunk: true, - }, + }, + priority: 10, + minChunks: 2, + reuseExistingChunk: true, + }, + }), }, maxInitialRequests: 25, minSize: 20000, diff --git a/test/.stats-app/stats-config.js b/test/.stats-app/stats-config.js index f13dd882f67a47c..7fee2eeb7264c00 100644 --- a/test/.stats-app/stats-config.js +++ b/test/.stats-app/stats-config.js @@ -135,5 +135,39 @@ module.exports = { }, ], }, + { + title: 'Webpack 5 Mode', + diff: 'onOutputChange', + renames, + configFiles: [ + { + path: 'next.config.js', + content: ` + module.exports = { + generateBuildId: () => 'BUILD_ID', + future: { + webpack5: true + } + } + `, + }, + ], + filesToTrack: clientGlobs, + // will be output to fetched-pages/${pathname}.html + pagesToFetch: [ + 'http://localhost:$PORT/', + 'http://localhost:$PORT/link', + 'http://localhost:$PORT/withRouter', + ], + pagesToBench: [ + 'http://localhost:$PORT/', + 'http://localhost:$PORT/error-in-render', + ], + benchOptions: { + reqTimeout: 60, + concurrency: 50, + numRequests: 2500, + }, + }, ], }