umi3.0基础配置文件(.umirc.ts配置文件试玩)

/*
 * @Description: umi3.0基础配置文件 文件多时候移到config文件下面单独配置模块 如 路由文件 .umirc.ts配置文件
 * @Version: 2.0
 * @Autor: lhl
 * @Date: 2020-03-20 14:15:48
 * @LastEditors: lhl
 * @LastEditTime: 2020-05-27 13:41:14
 */
import { defineConfig, utils } from 'umi';
import { resolve } from "path";
import pageRoutes from './config/router.config'

const { winPath } = utils;

// umi所有配置是平拍方式配置的 推荐在 .umirc.ts 中写配置。如果配置比较复杂需要拆分,可以放到 config/config.ts 中,并把配置的一部分拆出去,比如路由。两者二选一,.umirc.ts 优先级更高
export default defineConfig({
  // 配置标题
  // title: 'hi-umi你好',
  // ant-design-pro 的布局
  // layout: {
  //   name: 'Ant Design',
  //   locale: true
  // },
  base: '/',
  //生成hash文件名
  hash: true,
  //hash路由
  history: {
    type: 'hash',
  },
  // 为所有非三方脚本加上 crossorigin="anonymous" 属性,通常用于统计脚本错误。
  crossorigin: true,
  analytics: {
    ga: 'google analytics code', // 百度统计代码
    baidu: '5a66cxxxxxxxxxx9e13', // Google 统计代码
  },
  // disableRedirectHoist: true,//禁用 redirect 上提。
  devtool: 'source-map',//生成map文件
  //兼容浏览器版本  配置需要兼容的浏览器最低版本,会自动引入 polyfill 和做语法转换 Default: { chrome: 49, firefox: 64, safari: 10, edge: 13, ios: 10 }
  targets: {
    ie: 11,
  },
  // 使用 antd
  antd: {
    dark: false,
  },
  // 暂时关闭
  pwa: false,
  // locale: {
  //   default: 'zh-CN',
  //   baseNavigator: true,
  // },

  // 使用过 dva 目前内置版本是 ^4.0.0
  // 内置 dva,默认版本是 ^2.6.0-beta.20,如果项目中有依赖,会优先使用项目中依赖的版本。
  // 约定是到 model 组织方式,不用手动注册 model
  // 文件名即 namespace,model 内如果没有声明 namespace,会以文件名作为 namespace
  // 内置 dva-loading,直接 connect loading 字段使用即可
  dva: {
    immer: true, // 表示是否启用 immer 以方便修改 reducer
    hmr: true, // 表示是否启用 dva model 的热更新
  },
   // 配置主题,实际上是配 less 变量
   theme: {
    '@primary-color': '#1DA57A',
  },
  // 代理配置(跨域处理) http://10.98.98.142:8080/
  proxy: {
    '/api': {
      'target': 'http://10.98.101.225:8089/goods',
      'changeOrigin': true,
      'pathRewrite': { '^/api' : '' },
    },
  },
  // 额外样式配置
  styles: [
    `h1 { color: red !important; }`,
    // `https://a.com/b.css`,
  ],
  // 别名配置
  alias: {
    "@": resolve(__dirname, "./src"),
  },
  // 路由配置
  routes: pageRoutes,
  // 是否启用按需加载,即是否把构建产物进行拆分,在需要的时候下载额外的 JS 再执行
  dynamicImport: {
    // 无需 level, webpackChunkName 引入 tsx时候看看 tsconfig.json配置了相关配置没
    loading: '@/components/PageLoading/index',
  },
  cssLoader: {
    // 这里的 modules 可以接受 getLocalIdent
    modules: {
      getLocalIdent:(
        context: {
          resourcePath: string;
        },
        _: string,
        localName: string,
      ) => {
        if (
          context.resourcePath.includes('node_modules') ||
          context.resourcePath.includes('ant.design.pro.less') ||
          context.resourcePath.includes('global.less')
        ) {
          return localName;
        }
        const match = context.resourcePath.match(/src(.*)/);
        if (match && match[1]) {
          const antdProPath = match[1].replace('.less', '');
          const arr = winPath(antdProPath)
            .split('/')
            .map((a: string) => a.replace(/([A-Z])/g, '-$1'))
            .map((a: string) => a.toLowerCase());
          return `antd-pro${arr.join('-')}-${localName}`.replace(/--/g, '-');
        }
        return localName;
      },
    }
  }
});

更多更详细配置请移步官方文档:https://v2.umijs.org/zh/config/#%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE

原文地址:https://www.cnblogs.com/lhl66/p/12972445.html