nishiwei
5 days ago 3f43e40ed1a1e9f66b3ad2862da9dbc4b710c712
ard-ui/vue.config.js
@@ -1,14 +1,13 @@
'use strict'
const path = require('path')
const CompressionPlugin = require('compression-webpack-plugin')
const TerserPlugin = require('terser-webpack-plugin')
function resolve(dir) {
  return path.join(__dirname, dir)
}
const CompressionPlugin = require('compression-webpack-plugin')
const name = process.env.VUE_APP_TITLE || '无人机后台管理系统' // 网页标题
const port = process.env.port || process.env.npm_config_port || 80 // 端口
// vue.config.js 配置说明
@@ -27,12 +26,23 @@
  lintOnSave: process.env.NODE_ENV === 'development',
  // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  // 转译依赖
  transpileDependencies: ['quill'],
  // webpack-dev-server 相关配置
  devServer: {
    host: '0.0.0.0',
    port: port,
    open: true,
    // 添加热更新配置
    hot: true,
    // 添加客户端日志级别
    client: {
      logging: 'warn',
      overlay: {
        errors: true,
        warnings: false,
      },
    },
    proxy: {
      // detail: https://cli.vuejs.org/config/#devserver-proxy
      [process.env.VUE_APP_BASE_API]: {
@@ -40,34 +50,66 @@
        changeOrigin: true,
        pathRewrite: {
          ['^' + process.env.VUE_APP_BASE_API]: ''
        }
        },
        // 添加代理超时配置
        timeout: 30000,
        // 添加代理日志
        logLevel: 'debug'
      }
    },
    disableHostCheck: true
    // 移除已废弃的配置
    // disableHostCheck: true,
    // 使用新的配置
    allowedHosts: 'all'
  },
  css: {
    loaderOptions: {
      sass: {
        sassOptions: { outputStyle: "expanded" }
      }
    }
    },
    // 添加CSS提取配置
    extract: process.env.NODE_ENV === 'production'
  },
  configureWebpack: {
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
      },
      // 添加文件扩展名解析
      extensions: ['.js', '.vue', '.json']
    },
    // 添加性能提示配置
    performance: {
      hints: process.env.NODE_ENV === 'production' ? 'warning' : false,
      maxEntrypointSize: 512000,
      maxAssetSize: 512000
    },
    // 添加优化配置
    optimization: {
      minimizer: [
        new TerserPlugin({
          terserOptions: {
            compress: {
              drop_console: process.env.NODE_ENV === 'production',
              drop_debugger: process.env.NODE_ENV === 'production'
            }
          }
        })
      ]
    },
    plugins: [
      // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
      new CompressionPlugin({
        cache: false,                                  // 不启用文件缓存
        test: /\.(js|css|html|jpe?g|png|gif|svg)?$/i,  // 压缩文件格式
        test: /\.(js|css|html|jpe?g|png|gif|svg|woff2?|eot|ttf|otf)?$/i,  // 压缩文件格式
        filename: '[path][base].gz[query]',            // 压缩后的文件名
        algorithm: 'gzip',                             // 使用gzip压缩
        minRatio: 0.8,                                 // 压缩比例,小于 80% 的文件不会被压缩
        deleteOriginalAssets: false                    // 压缩后删除原文件
        deleteOriginalAssets: false,                   // 压缩后删除原文件
        threshold: 10240,                              // 只有大于该值的资源会被处理
        minSize: 0                                     // 只有大于该值的资源会被处理
      })
    ],
  },
@@ -91,6 +133,13 @@
        symbolId: 'icon-[name]'
      })
      .end()
    // 添加图片压缩配置
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => Object.assign(options, { limit: 10240 }))
    config.when(process.env.NODE_ENV !== 'development', config => {
          config
@@ -116,6 +165,11 @@
                test: /[\\/]node_modules[\\/]_?element-ui(.*)/, // in order to adapt to cnpm
                priority: 20 // the weight needs to be larger than libs and app or it will be packaged into libs or app
              },
              echarts: {
                name: 'chunk-echarts', // split echarts into a single package
                test: /[\\/]node_modules[\\/]_?echarts(.*)/,
                priority: 15
              },
              commons: {
                name: 'chunk-commons',
                test: resolve('src/components'), // can customize your rules
@@ -127,5 +181,15 @@
          })
          config.optimization.runtimeChunk('single')
    })
    // 添加开发环境优化
    config.when(process.env.NODE_ENV === 'development', config => {
      config.devtool('cheap-module-eval-source-map')
    })
    // 添加生产环境优化
    config.when(process.env.NODE_ENV === 'production', config => {
      config.devtool('source-map')
    })
  }
}