import path from 'path'; function getModulePackageName(module) { 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 = moduleDirName; // handle tree shaking if (packageName && packageName.match('^_')) { // eslint-disable-next-line prefer-destructuring packageName = packageName.match(/^_(@?[^@]+)/)[1]; } return packageName; } export const webpackPlugin = config => { // 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 => { // const packageName = getModulePackageName(module) || ''; // if (packageName) { // return [ // 'bizcharts', // 'gg-editor', // 'g6', // '@antv', // 'gg-editor-core', // 'bizcharts-plugin-slider', // ].includes(packageName); // } // return false; // }, // name(module) { // const packageName = getModulePackageName(module); // if (packageName) { // if (['bizcharts', '@antv_data-set'].indexOf(packageName) >= 0) { // return 'viz'; // visualization package // } // } // return 'misc'; // }, // }, // }, // }) };