• vue-element-admin vue.config.js


    'use strict'
    const path = require('path')
    const defaultSettings = require('./src/settings.js')
    
    function resolve(dir) {
      return path.join(__dirname, dir)
    }
    
    const name = defaultSettings.title || 'vue Element Admin' // page title
    
    const port = process.env.port || process.env.npm_config_port || 9527 // dev port
    
    // https://cli.vuejs.org/config/
    module.exports = {
      // 相对路径,构建出来的包存放的路径
      publicPath: '/',
    
      // 构建出来的包输出的目录 [default: dist]
      outputDir: 'dist',
    
      // 防止静态资源的目录
      assetsDir: 'static',
    
      // 保存使用eslint-loader检查
      lintOnSave: process.env.NODE_ENV === 'development',
    
      // 不需要生产环境的sourceMap,设为false加速生产环境构建
      productionSourceMap: false,
    
      // 用于改变原devServer配置项的默认行为
      devServer: {
        port: port,
        open: true,
        overlay: {
          warnings: false,
          errors: true
        },
        before: require('./mock/mock-server.js'),
    
        // 在开发环境下将api请求代理到api服务器
        proxy: {
          '/api': {
            target: 'http://192.168.1.192:13012',
            changeOrigin: true,
            secure: false,
            ws: true,
            pathRewrite: {
              '^/api': ''
            }
          }
        }
      },
    
      /**
       * webpack相关配置,基于webpack-merge
       * object:合并至最终的配置中
       * function:会接受被解析的配置作为参数
       * */
      configureWebpack: {
        name: name,
        resolve: {
          alias: {
            '@': resolve('src')
          }
        }
      },
    
      // 基于webpack-chain对内部的webpack配置进行更细粒度的修改
      chainWebpack(config) {
        // 它可以提高首屏的速度,建议开启预加载
        config.plugin('preload').tap(() => [
          {
            rel: 'preload',
            fileBlacklist: [/.map$/, /hot-update.js$/, /runtime..*.js$/],
            include: 'initial'
          }
        ])
    
        // 当页面太多时,会导致太多无意义的请求
        config.plugins.delete('prefetch')
    
        // set svg-sprite-loader
        config.module
          .rule('svg')
          .exclude.add(resolve('src/icons'))
          .end()
        config.module
          .rule('icons')
          .test(/.svg$/)
          .include.add(resolve('src/icons'))
          .end()
          .use('svg-sprite-loader')
          .loader('svg-sprite-loader')
          .options({
            symbolId: 'icon-[name]'
          })
          .end()
    
        config
          .when(process.env.NODE_ENV !== 'development',
            config => {
              config
                .plugin('ScriptExtHtmlWebpackPlugin')
                .after('html')
                .use('script-ext-html-webpack-plugin', [{
                // `runtime` must same as runtimeChunk name. default is `runtime`
                  inline: /runtime..*.js$/
                }])
                .end()
    
              // 打包代码分割
              config
                .optimization.splitChunks({
                  chunks: 'all',
                  cacheGroups: {
                    libs: {
                      name: 'chunk-libs',
                      test: /[\/]node_modules[\/]/,
                      priority: 10,
                      chunks: 'initial' // 仅限于最初依赖的第三方
                    },
                    elementUI: {
                      name: 'chunk-elementUI', // 将elementUI拆分为单个包
                      priority: 20, // 重量需要大于libs和app,否则将打包到libs或app中
                      test: /[\/]node_modules[\/]_?element-ui(.*)/ // 为了适应cnpm
                    },
                    commons: {
                      name: 'chunk-commons',
                      test: resolve('src/components'), // 您可以自定义您的规则
                      minChunks: 3, //  最小公共数
                      priority: 5,
                      reuseExistingChunk: true
                    }
                  }
                })
              // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
              config.optimization.runtimeChunk('single')
            }
          )
      }
    }
    
    
  • 相关阅读:
    vmware 上安装 gentoo
    有关网络编程
    【记录】Linux API钩子-文件打开
    在linux上实现DllMain + 共享库创建方法
    让程序在指定路径寻找库文件 + 库文件搜索顺序
    自定义协议解析
    修改bashrc,如何立即刷新
    Autoconf学习笔记
    ps命令输出,进程状态
    npm 使用 taobao 的镜像后,无法 login & publish
  • 原文地址:https://www.cnblogs.com/pleaseAnswer/p/15458378.html
Copyright © 2020-2023  润新知