mirror of
https://github.com/chillzhuang/Sword
synced 2024-12-23 09:29:25 +08:00
120 lines
2.8 KiB
JavaScript
120 lines
2.8 KiB
JavaScript
// 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 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,
|
|
},
|
|
pwa: pwa
|
|
? {
|
|
workboxPluginMode: 'InjectManifest',
|
|
workboxOptions: {
|
|
importWorkboxFrom: 'local',
|
|
},
|
|
}
|
|
: {},
|
|
...(!process.env.TEST && os.platform() === 'darwin'
|
|
? {
|
|
dll: {
|
|
include: ['dva', 'dva/router', 'dva/saga', 'dva/fetch'],
|
|
exclude: ['@babel/runtime'],
|
|
},
|
|
hardSource: false,
|
|
}
|
|
: {}),
|
|
},
|
|
],
|
|
];
|
|
|
|
// 针对 preview.pro.ant.design 的 GA 统计代码
|
|
// 业务上不需要这个
|
|
if (process.env.APP_TYPE === 'site') {
|
|
plugins.push([
|
|
'umi-plugin-ga',
|
|
{
|
|
code: 'UA-72788897-6',
|
|
},
|
|
]);
|
|
}
|
|
|
|
export default {
|
|
// add for transfer to umi
|
|
plugins,
|
|
history: 'hash',
|
|
define: {
|
|
APP_TYPE: process.env.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',
|
|
},
|
|
proxy: {
|
|
'/api': {
|
|
target: 'http://localhost',
|
|
changeOrigin: true,
|
|
pathRewrite: { '^/api': '' },
|
|
},
|
|
},
|
|
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,
|
|
};
|