committed by
GitHub
4 changed files with 9 additions and 115 deletions
@ -1,65 +0,0 @@ |
|||
import path from 'path'; |
|||
|
|||
import * as IWebpackChainConfig from 'webpack-chain'; |
|||
|
|||
function getModulePackageName(module: { context: string }) { |
|||
if (!module.context) return null; |
|||
|
|||
const nodeModulesPath = path.join(__dirname, '../node_modules/'); |
|||
if (module.context.substring(0, nodeModulesPath.length) !== nodeModulesPath) { |
|||
return null; |
|||
} |
|||
|
|||
const moduleRelativePath = module.context.substring(nodeModulesPath.length); |
|||
const [moduleDirName] = moduleRelativePath.split(path.sep); |
|||
let packageName: string | null = moduleDirName; |
|||
// handle tree shaking
|
|||
if (packageName && packageName.match('^_')) { |
|||
// eslint-disable-next-line prefer-destructuring
|
|||
packageName = packageName.match(/^_(@?[^@]+)/)![1]; |
|||
} |
|||
return packageName; |
|||
} |
|||
|
|||
const webpackPlugin = (config: IWebpackChainConfig) => { |
|||
// optimize chunks
|
|||
config.optimization |
|||
// share the same chunks across different modules
|
|||
.runtimeChunk(false) |
|||
.splitChunks({ |
|||
chunks: 'async', |
|||
name: 'vendors', |
|||
maxInitialRequests: Infinity, |
|||
minSize: 0, |
|||
cacheGroups: { |
|||
vendors: { |
|||
test: (module: { context: string }) => { |
|||
const packageName = getModulePackageName(module) || ''; |
|||
if (packageName) { |
|||
return [ |
|||
'bizcharts', |
|||
'gg-editor', |
|||
'g6', |
|||
'@antv', |
|||
'l7', |
|||
'gg-editor-core', |
|||
'bizcharts-plugin-slider', |
|||
].includes(packageName); |
|||
} |
|||
return false; |
|||
}, |
|||
name(module: { context: string }) { |
|||
const packageName = getModulePackageName(module); |
|||
if (packageName) { |
|||
if (['bizcharts', '@antv_data-set'].indexOf(packageName) >= 0) { |
|||
return 'viz'; // visualization package
|
|||
} |
|||
} |
|||
return 'misc'; |
|||
}, |
|||
}, |
|||
}, |
|||
}); |
|||
}; |
|||
|
|||
export default webpackPlugin; |
|||
Loading…
Reference in new issue