You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.9 KiB
113 lines
2.9 KiB
import { defineConfig } from '@umijs/max';
|
|
import proxy from './proxy';
|
|
import routes from './routes';
|
|
import theme from './theme';
|
|
import { getBranchInfo } from './utils';
|
|
const CompressionWebpackPlugin = require('compression-webpack-plugin');
|
|
|
|
const versionInfo = getBranchInfo();
|
|
process.env.VERSION = JSON.stringify(versionInfo);
|
|
|
|
const env = process.env.NODE_ENV;
|
|
const isProduction = env === 'production';
|
|
|
|
const t = Date.now();
|
|
export default defineConfig({
|
|
proxy: {
|
|
...proxy()
|
|
},
|
|
history: {
|
|
type: 'hash'
|
|
},
|
|
// https: {
|
|
// http2: true
|
|
// },
|
|
base: process.env.npm_config_base || '/',
|
|
...(isProduction
|
|
? {
|
|
jsMinifierOptions: {
|
|
compress: {
|
|
drop_console: true,
|
|
drop_debugger: true
|
|
}
|
|
},
|
|
scripts: [
|
|
{
|
|
src: `/js/umi.${t}.js`
|
|
}
|
|
],
|
|
chainWebpack(config: any) {
|
|
config.plugin('mini-css-extract-plugin').tap((args: any) => [
|
|
{
|
|
...args[0],
|
|
filename: `css/[name].${t}.css`,
|
|
chunkFilename: `css/[name].${t}.chunk.css`
|
|
}
|
|
]);
|
|
config.output
|
|
.filename(`js/[name].${t}.js`)
|
|
.chunkFilename(`js/[name].${t}.chunk.js`);
|
|
config
|
|
.plugin('compression-webpack-plugin')
|
|
.use(CompressionWebpackPlugin, [
|
|
{
|
|
filename: '[path][base].gz',
|
|
algorithm: 'gzip',
|
|
test: /\.(js|css|html|svg)$/,
|
|
threshold: 10240,
|
|
minRatio: 0.8
|
|
}
|
|
]);
|
|
// config.module
|
|
// .rule('images')
|
|
// .test(/\.(png|jpe?g|gif|svg|ico)(\?.*)?$/)
|
|
// .use('url-loader')
|
|
// .loader(require.resolve('url-loader'))
|
|
// .tap((options: any) => {
|
|
// console.log('iamges==options========', options);
|
|
// return {
|
|
// ...options,
|
|
// limit: 8192, // 小于8KB的图片会被转为base64
|
|
// fallback: {
|
|
// loader: require.resolve('file-loader'),
|
|
// options: {
|
|
// name: 'static/[name].[hash:8].[ext]' // 将所有图片输出到 static 目录
|
|
// }
|
|
// }
|
|
// };
|
|
// });
|
|
}
|
|
}
|
|
: {}),
|
|
// esbuildMinifyIIFE: true,
|
|
|
|
favicons: ['/static/favicon.png'],
|
|
jsMinifier: 'terser',
|
|
cssMinifier: 'cssnano',
|
|
presets: ['umi-presets-pro'],
|
|
clickToComponent: {},
|
|
antd: {
|
|
style: 'less',
|
|
configProvider: {
|
|
componentSize: 'large',
|
|
theme
|
|
}
|
|
},
|
|
hash: true,
|
|
access: {},
|
|
model: {},
|
|
initialState: {},
|
|
request: {},
|
|
locale: {
|
|
antd: true,
|
|
baseNavigator: true,
|
|
baseSeparator: '-',
|
|
default: 'en-US',
|
|
title: false,
|
|
useLocalStorage: true
|
|
},
|
|
layout: false,
|
|
routes,
|
|
npmClient: 'pnpm'
|
|
}) as any;
|