ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

umijs 开发优化和生产优化

2021-07-19 19:02:05  阅读:477  来源: 互联网

标签:const version 优化 cdn umijs 开发 import config defineConfig


.umirc.ts

import { defineConfig } from 'umi';

import dev from './config/dev';
import prod from './config/prod';

console.log(process.env.NODE_ENV);
const envConfig = 'development' === process.env.NODE_ENV ? dev : prod;

export default defineConfig({
  webpack5: {}, // 使用webpack 5
  nodeModulesTransform: {
    type: 'none',
  },
  routes: [{ path: '/', component: '@/pages/index' }],
  fastRefresh: {},
  ...envConfig,
});

config/dev

开发时使用chunk缓存减少打包时间

import { defineConfig } from 'umi';

export default defineConfig({
  hash: false,
  devServer: {
    // writeToDisk: true,
  },
  chunks: ['vendors', 'umi'],
  chainWebpack: function (config, { webpack }) {
    config.merge({
      optimization: {
        moduleIds: 'deterministic',
        splitChunks: {
          cacheGroups: {
            vendor: {
              test: /[\\/]node_modules[\\/]/,
              name: 'vendors',
              chunks: 'all',
            },
          },
        },
      },
    });
  },
});

config/prod

打包生产时 能用cdn的就用cdn

import { defineConfig } from 'umi';
import * as pkg from '../package.json';

const externalsConfig: any = {
  lodash: {
    name: '_',
    cdn: (version: string) =>
      `https://cdnjs.cloudflare.com/ajax/libs/react/${version}/umd/react.production.min.js`,
  },
  react: {
    name: 'React',
    cdn: (version: string) =>
      `https://cdnjs.cloudflare.com/ajax/libs/react-dom/${version}/umd/react-dom.production.min.js`,
  },
  'react-dom': {
    name: 'ReactDOM',
    cdn: (version: string) =>
      `https://cdnjs.cloudflare.com/ajax/libs/lodash.js/${version}/lodash.min.js`,
  },
};

const externals: any = {};
const scripts: string[] = [];
for (const pname in externalsConfig) {
  externals[pname] = externalsConfig[pname].name;
  if (pname in pkg.dependencies) {
    const version = (pkg.dependencies as any)[pname].replace(/^\D/, '');
    scripts.push(externalsConfig[pname].cdn(version));
  }
}

export default defineConfig({
  hash: true,
  chainWebpack: function (config, { webpack }) {
    config.merge({
      optimization: {
        minimize: true,
        usedExports: true,
      },
    });
  },
  externals,
  scripts,
});

标签:const,version,优化,cdn,umijs,开发,import,config,defineConfig
来源: https://www.cnblogs.com/ajanuw/p/15031752.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有