Skip to content

Instantly share code, notes, and snippets.

@romanlex
Created May 7, 2018 13:31
Show Gist options
  • Save romanlex/10bc2a187e480ea7709f4f37df13794c to your computer and use it in GitHub Desktop.
Save romanlex/10bc2a187e480ea7709f4f37df13794c to your computer and use it in GitHub Desktop.
{
plugins: [
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
async: 'common',
children: true,
deepChildren: true,
minChunks: (module, count) => {
return count >= 3 && module.context && !module.context.includes('node_modules');
},
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'app',
children: true,
deepChildren: true,
minChunks: (module) => {
if (module.resource && (/^.*\.(css|scss|sass)$/).test(module.resource)) {
return false;
}
return module.context && module.context.includes('node_modules');
},
}),
new webpack.optimize.CommonsChunkPlugin({
name: 'vendor',
minChunks: (module) => {
if (module.resource && (/^.*\.(css|scss|sass)$/).test(module.resource)) {
return false;
}
return module.context && module.context.includes('node_modules');
},
}),
]
}
@romanlex
Copy link
Author

romanlex commented May 7, 2018

Для случая когда необходимо выделить vendor из всех entry точек входа и дочерних асинхронных чанков
Импортируемые при этом стили из node_modules будут попадать в главный entry

  1. Сначала выделяем все что используется более 3х раз в common асинхронный.
  2. Из остатков экстрактим node_modules из всех дочерних чанков
  3. Все пихаем в entry chunk

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment