• antDPro打包优化


    通过npm run analyze查看打包情况,发现chunks中包含大量的重复打包

    通过提取公共chunk来实现减少打包体积以及提高打包速度

    从原来的20M经过拆包之后  最终变成了4M   官方文档   https://umijs.org/zh-CN/config#chainwebpack

    // https://umijs.org/config/
    import { defineConfig } from 'umi';
    import defaultSettings from './defaultSettings';
    import proxy from './proxy';
    import routes from './routes';
    
    const { REACT_APP_ENV } = process.env;
    
    // 分包
    const chunkCacheGroups = {
      umijs: {
        name: 'chunk-umi-js',
        test: /[\\/]node_modules[\\/]_?(@umijs)[\\/]/,
        priority: 60,
      },
      rcform: {
        name: 'chunk-rcform',
        test: /[\\/]node_modules[\\/]_?((rmc-.*)|(rc-.*))(.*)/,
        priority: 50,
        enforce: true,
      },
      antd: {
        name: 'chunk-antd',
        test: /[\\/]node_modules[\\/]_?(antd)(.*)/,
        priority: 50,
        enforce: true,
      },
      antpro: {
        name: 'chunk-ant-design',
        test: /[\\/]node_modules[\\/](@ant-design)[\\/]pro(.*)/,
        priority: 50,
        enforce: true,
      },
      antproicon: {
        name: 'chunk-ant-design-icon',
        test: /[\\/]node_modules[\\/](@ant-design)[\\/]icons(.*)/,
        priority: 50,
        enforce: true,
      },
      braft: {
        name: 'chunk-braft-js',
        test: /[\\/]node_modules[\\/]_?(braft(.*))[\\/]/,
        priority: 55,
        enforce: true,
      },
      draft: {
        name: 'chunk-draft-js',
        test: /[\\/]node_modules[\\/]_?(draft(.*))[\\/]/,
        priority: 55,
        enforce: true,
      },
      immutable: {
        name: 'chunk-immutable-js',
        test: /[\\/]node_modules[\\/]_?(immutable)[\\/]/,
        priority: 55,
        enforce: true,
      },
      react: {
        name: 'chunk-react',
        test: /[\\/]node_modules[\\/](react|react-dom|(react(.*))|react-color|react-copy-to-clipboard|react-helmet-async)[\\/]/,
        priority: 55,
        enforce: true,
      },
      utils: {
        name: 'chunk-utils',
        test: /[\\/]node_modules[\\/]_?(use-merge-value|shortid|qs|moment|lodash(.*)|lodash|use-media-antd-query|use-media-antd-query|material-color|intersection-observer)[\\/]/,
        priority: 55,
        enforce: true,
      },
      libs: {
        name: 'chunk-libs',
        test: /[\\/]node_modules[\\/](component-classes|t-non-react-statics|shallowequal|raf|classnames|fbjs|array-tree-filter|dom-align|add-dom-event-listener|css-animation|tinycolor2|swr|ua-parser-js|viewerjs)[\\/]/,
        priority: 50,
        enforce: true,
      },
      utilsVendor: {
        name: 'chunk-utils-vendor',
        test: /[\\/]utils[\\/]/,
        priority: 50,
        enforce: true,
      },
    };
    
    // chunk-name
    const getSplitChunks = () => {
      const chunks = Object.values(chunkCacheGroups);
      const chunkBundles = [];
      chunks.map((chunk, key) => {
        chunkBundles[key] = chunk.name;
      });
      return chunkBundles;
    };
    
    export default defineConfig({
      ...
      chunks: REACT_APP_ENV !== 'dev' ? [...getSplitChunks(), 'umi'] : undefined,
      chainWebpack(config, { webpack }) {
        if (REACT_APP_ENV === 'dev') return;
        config.merge({
          optimization: {
            splitChunks: {
              chunks: 'all', // async 不会打包静态引用的文件
              minSize: 30000, // 30000 大于这个值的文件会被提取成单独文件
              minChunks: 3,
              automaticNameDelimiter: '.',
              cacheGroups: chunkCacheGroups,
            },
          },
        });
      },
    });
  • 相关阅读:
    Azure HPC Pack Cluster添加辅助节点
    Azure HPC Pack 辅助节点模板配置
    Azure HPC Pack配置管理系列(PART6)
    Windows HPC Pack 2012 R2配置
    Azure HPC Pack 节点提升成域控制器
    Azure HPC Pack VM 节点创建和配置
    Azure HPC Pack 部署必要条件准备
    Azure HPC Pack 基础拓扑概述
    Azure VM 性能计数器配置
    Maven私仓配置
  • 原文地址:https://www.cnblogs.com/cazj/p/15699206.html
Copyright © 2020-2023  润新知