Skip to content

Instantly share code, notes, and snippets.

@n8jadams
Created October 28, 2022 17:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save n8jadams/b62738069e8d9089ab6058ad9cb0579f to your computer and use it in GitHub Desktop.
Save n8jadams/b62738069e8d9089ab6058ad9cb0579f to your computer and use it in GitHub Desktop.
Split up vendors into smaller chunks
// The best way to split up your npm deps into smaller chunks
module.exports = (env) => {
const config = {
// ... rest of config options
optimization: {
runtimeChunk: "single",
splitChunks: {
cacheGroups: {
vendors: {
test: /[\\/]node_modules[\\/]/,
name(module) {
const [_, afterNodeModules] = module.context.split("/node_modules/")
if (!afterNodeModules) {
return false
}
const packageName = afterNodeModules.split("/")[0]
const moduleFileName = module
.identifier()
.split("/")
.reduceRight((item) => item)
// npm package names are URL-safe, but some servers don't like @ symbols
return `vendors.${packageName.replace("@", "")}.${moduleFileName}`
},
chunks: "all"
}
}
}
}
}
return config
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment