| | |
| | | '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 配置说明 |
| | |
| | | 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]: { |
| | |
| | | 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 // 只有大于该值的资源会被处理 |
| | | }) |
| | | ], |
| | | }, |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | }) |
| | | 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') |
| | | }) |
| | | } |
| | | } |