// https://umijs.org/config/ import os from 'os'; import pageRoutes from './router.config'; import webpackPlugin from './plugin.config'; import defaultSettings from '../src/defaultSettings'; import slash from 'slash2'; const { pwa, primaryColor } = defaultSettings; const { NODE_ENV, APP_TYPE, TEST } = process.env; const plugins = [ [ '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: pwa ? { workboxPluginMode: 'InjectManifest', workboxOptions: { importWorkboxFrom: 'local', }, } : {}, ...(!TEST && os.platform() === 'darwin' ? { dll: { include: ['dva', 'dva/router', 'dva/saga', 'dva/fetch'], exclude: ['@babel/runtime'], }, hardSource: false, } : {}), }, ], ]; // 针对 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: pageRoutes, // Theme for antd // https://ant.design/docs/react/customize-theme-cn theme: { 'primary-color': primaryColor, }, externals: { '@antv/data-set': 'DataSet', bizcharts: 'BizCharts', }, proxy: { '/admin-api/': { target: 'http://180.167.213.26:18083/', changeOrigin: true, pathRewrite: {}, }, '/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, };