// https://umijs.org/config/ import defaultSettings from './defaultSettings' import proxy from './proxy' import routes from './routes' import { defineConfig } from '@umijs/max' import { dirname } from 'path' const CompressionPlugin = require('compression-webpack-plugin') const prodGzipList = ['js', 'css', 'html'] const { REACT_APP_ENV } = process.env export default defineConfig({ plugins: [require.resolve('@umijs/plugins/dist/unocss')], npmClient: 'pnpm', hash: true, antd: {}, model: {}, moment2dayjs: {}, request: {}, initialState: {}, access: {}, dva: {}, mfsu: {}, srcTranspiler: 'esbuild', fastRefresh: true, unocss: { watch: ['src/{pages,components}/**/*.{jsx,tsx}'] // 添加其他包含 unocss 的 classname 的文件目录 }, // Fast Refresh 热更新 theme: { 'primary-color': '#886ab5' }, layout: {}, deadCode: {}, // 检测未使用的文件和导出,仅在 build 阶段开启 locale: { default: 'zh-CN', antd: false, baseNavigator: false }, define: { REACT_APP_ENV: REACT_APP_ENV || false }, targets: { ie: 11 }, routes, title: false, proxy: proxy[REACT_APP_ENV || 'dev'], manifest: { basePath: '/' }, extraBabelPlugins: [ [ 'import', { libraryName: '@icon-park/react', libraryDirectory: 'es/icons', camel2DashComponentName: false }, '@icon-park/react' ], [ 'import', { libraryName: 'antd', libraryDirectory: 'es', style: 'less' }, 'antd' ] ], externals: { react: 'React', 'react-dom': 'ReactDOM' }, chainWebpack(config, { env }) { config.plugin('compression-webpack-plugin').use( new CompressionPlugin({ // filename: 文件名称,这里我们不设置,让它保持和未压缩的文件同一个名称 algorithm: 'gzip', // 指定生成gzip格式 test: new RegExp('\\.(' + prodGzipList.join('|') + ')$'), // 匹配哪些格式文件需要压缩 threshold: 10000, //对超过10k的数据进行压缩 minRatio: 0.6 // 压缩比例,值为0 ~ 1 }) ) } })