| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | // https://umijs.org/config/import { defineConfig } from 'umi';const assetDir = "static"export default defineConfig({  history: { type: 'hash' }, // 默认是 browse  // devtool: 'source-map',//正式坏境查看报错使用,假如正式版稳定请关闭   // map关闭   devtool: false,  //新增  nodeModulesTransform: {    type: 'none',    exclude: [],  },  chunks: ['vendors', 'umi'],  chainWebpack: function (config, { env, webpack, createCSSRule }) {    // 修改js,js chunk文件输出目录    config.output      .filename(assetDir + "/js/[name].[contenthash:8].js")      .chunkFilename(assetDir + "/js/[name].[contenthash:8].chunk.js");    // 修改css输出目录    config.plugin("extract-css").tap(() => [      {        filename: `${assetDir}/css/[name].[contenthash:8].css`,        chunkFilename: `${assetDir}/css/[name].[contenthash:8].chunk.css`,        ignoreOrder: true,      },    ]);    // 修改图片输出目录    config.module      .rule("images")      .test(/\.(png|jpe?g|gif|webp|ico)(\?.*)?$/)      .use("url-loader")      .loader(require.resolve("url-loader"))      .tap((options) => {        const newOptions = {          ...options,          name: assetDir + "/img/[name].[hash:8].[ext]",          fallback: {            ...options.fallback,            options: {              name: assetDir + "/img/[name].[hash:8].[ext]",              esModule: false,            },          },        };        return newOptions;      });    // 修改svg输出目录    // config.module    //   .rule("svg")    //   .test(/\.(svg)(\?.*)?$/)    //   .use("file-loader")    //   .loader(require.resolve("file-loader"))    //   .tap((options) => ({    //     ...options,    //     name: assetDir + "/img/[name].[hash:8].[ext]",    //   }));    // 修改fonts输出目录    // config.module    //   .rule("fonts")    //   .test(/\.(eot|woff|woff2|ttf)(\?.*)?$/)    //   .use("file-loader")    //   .loader(require.resolve("file-loader"))    //   .tap((options) => ({    //     ...options,    //     name: assetDir + "/fonts/[name].[hash:8].[ext]",    //     fallback: {    //       ...options.fallback,    //       options: {    //         name: assetDir + "/img/[name].[hash:8].[ext]",    //         esModule: false,    //       },    //     },    //   }));    // // 添加gzip压缩    // config.when(true, (config) => {    //   config    //     .plugin("compression-webpack-plugin")    //     .use(CompressionWebpackPlugin, [    //       {    //         filename: "[path][base].gz",    //         algorithm: "gzip",    //         test: new RegExp("\\.(js|css)$"),    //         threshold: 10240,    //         minRatio: 0.8,    //         // deleteOriginalAssets: true//删除源文件    //       },    //     ]);    // });    //通用插件合并    config.merge({      optimization: {        splitChunks: {          chunks: 'all',          minSize: 30000,          minChunks: 3,          automaticNameDelimiter: '.',          cacheGroups: {            vendor: {              name: 'vendors',              test({ resource }: any) {                return /[\\/]node_modules[\\/]/.test(resource);              },              priority: 10,            },          },        },      }    });  },  // 出去console.log  terserOptions: {    compress: {      drop_console: true,    },  },  //替换压缩器为 esbuild  esbuild: {},  // 不打包组件使用cdn  externals: {    // react: 'window.React',    // 'react-dom': 'window.ReactDOM',    // antd: 'window.antd',    // echarts: 'window.echarts',    // moment: 'window.moment'   },  scripts: [    // 'https://unpkg.com/react@17/umd/react.production.min.js',    // "https://unpkg.com/react-dom@17/umd/react-dom.production.min.js",    // 'https://cdn.bootcdn.net/ajax/libs/moment.js/2.29.1/moment.min.js',    // 'https://lib.baomitu.com/antd/4.16.2/antd-with-locales.min.js',    // 'https://lib.baomitu.com/antd/4.16.12/antd.min.js',    // 'https://cdn.bootcdn.net/ajax/libs/echarts/5.1.2/echarts.min.js',  ],  extraBabelPlugins:['transform-remove-console']});
 |