Skip to content

Commit

Permalink
improve splitChunks config for webpack 5 (#21208)
Browse files Browse the repository at this point in the history
  • Loading branch information
sokra committed Jan 17, 2021
1 parent 9c4d368 commit b02df3f
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 27 deletions.
57 changes: 30 additions & 27 deletions packages/next/build/webpack-config.ts
Expand Up @@ -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',
Expand All @@ -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: {
Expand Down Expand Up @@ -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,
Expand Down
34 changes: 34 additions & 0 deletions test/.stats-app/stats-config.js
Expand Up @@ -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,
},
},
],
}

0 comments on commit b02df3f

Please sign in to comment.