const path = require("path");
 const resolve = dir => {
   return path.join(__dirname, dir);
 };
 const isDev = process.env.NODE_ENV === "development";
 const CompressionWebpackPlugin = require("compression-webpack-plugin");
 const ProductionGzipExtensions = ["html", "js", "css", "svg"];
 const WebpackBar = require("webpackbar");
 const webpackBarName = "WMS_Admin";
 
 module.exports = {
   publicPath: "",
   outputDir: "dist/admin",
   devServer: {
     open: true, // 自动
     port: 8080 // 端口
   },
   // 开启多进程 babel 编译
   parallel: require("os").cpus().length > 1,
   configureWebpack(config) {
     //配置根目录
     return {
       resolve: {
         alias: {
           "@": resolve("src")
         }
       },
       plugins: [
         new WebpackBar({
           name: webpackBarName
         })
       ]
     };
   },
   chainWebpack(config) {
     config.when(isDev, config => {
       config.devtool("source-map");
     });
     /// 拆包配置
     config.plugins.delete("prefetch");
     config.resolve.symlinks(true);
     config.when(!isDev, config => {
       config.devtool("none");
       config.optimization.splitChunks({
         chunks: "all",
         cacheGroups: {
           libs: {
             name: "Chunk-Libs",
             test: /[\\/]node_modules[\\/]/,
             priority: 10,
             chunks: "initial"
           },
           AntdUI: {
             name: "Chunk-Antd",
             priority: 20,
             test: /[\\/]node_modules[\\/]_?@ant-design(.*)/
           }
         }
       });
       // 资源压缩
       config
         .plugin("compression")
         .use(CompressionWebpackPlugin, [
           {
             filename: "[path][base].gz[query]",
             algorithm: "gzip",
             test: new RegExp(
               "\\.(" + ProductionGzipExtensions.join("|") + ")$"
             ),
             threshold: 8192,
             minRatio: 0.8
           }
         ])
         .end();
     });
   },
   runtimeCompiler: true,
   productionSourceMap: false,
   css: {
     requireModuleExtension: true,
     sourceMap: true,
     loaderOptions: {
       less: {
         lessOptions: {
           javascriptEnabled: true
         }
       }
     }
   }
 };