// https://umijs.org/config/ // import os from 'os'; import slash from 'slash2'; import { IPlugin, IConfig } from 'umi-types'; import defaultSettings from './defaultSettings'; import webpackPlugin from './plugin.config'; const { pwa, primaryColor } = defaultSettings; const { APP_TYPE, TEST } = process.env; const plugins: IPlugin[] = [ [ 'umi-plugin-react', { antd: true, dva: { hmr: true, }, locale: { enable: true, // default false default: 'zh-CN', // default zh-CN baseNavigator: true, // default true, when it is true, will use `navigator.language` overwrite default }, dynamicImport: { loadingComponent: './components/PageLoading/index', webpackChunkName: true, level: 3, }, pwa: { workboxPluginMode: 'InjectManifest', workboxOptions: { importWorkboxFrom: 'local', }, }, }, ], [ 'umi-plugin-pro-block', { moveMock: false, moveService: false, modifyRequest: true, autoAddMenu: true, }, ], // ...(!process.env.TEST && os.platform() === 'darwin' // ? { // dll: { // include: ['dva', 'dva/router', 'dva/saga', 'dva/fetch'], // exclude: ['@babel/runtime'], // }, // hardSource: true, // } // : {}), ]; // 针对 preview.pro.ant.design 的 GA 统计代码 // 业务上不需要这个 if (APP_TYPE === 'site') { plugins.push([ 'umi-plugin-ga', { code: 'UA-72788897-6', }, ]); } export default { // add for transfer to umi plugins, define: { APP_TYPE: APP_TYPE || '', }, treeShaking: true, targets: { ie: 11, }, // 路由配置 routes: [ { path: '/user', components: ['../layouts/UserLayout'], routes: [], }, { path: '/', component: '../layouts/BasicLayout', Routes: ['src/pages/Authorized'], authority: ['admin', 'user'], routes: [ // dashboard { path: '/', name: 'welcome', icon: 'smile', component: './Welcome', }, ], }, ], // Theme for antd // https://ant.design/docs/react/customize-theme-cn theme: { 'primary-color': primaryColor, }, externals: { '@antv/data-set': 'DataSet', bizcharts: 'BizCharts', }, // proxy: { // '/server/api/': { // target: 'https://preview.pro.ant.design/', // changeOrigin: true, // pathRewrite: { '^/server': '' }, // }, // }, ignoreMomentLocale: true, lessLoaderOptions: { javascriptEnabled: true, }, disableRedirectHoist: true, cssLoaderOptions: { modules: true, getLocalIdent: (context, localIdentName, localName) => { 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 = slash(antdProPath) .split('/') .map(a => a.replace(/([A-Z])/g, '-$1')) .map(a => a.toLowerCase()); return `antd-pro${arr.join('-')}-${localName}`.replace(/--/g, '-'); } return localName; }, }, manifest: { basePath: '/', }, chainWebpack: webpackPlugin, } as IConfig;