|  | @@ -5,7 +5,7 @@ const CompressionPlugin = require('compression-webpack-plugin');
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function resolve(dir) {
 | 
	
		
			
				|  |  | -  return path.join(__dirname, dir)
 | 
	
		
			
				|  |  | +    return path.join(__dirname, dir)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const name = defaultSettings.title || '个人中心' // page title
 | 
	
	
		
			
				|  | @@ -19,129 +19,127 @@ const port = process.env.port || process.env.npm_config_port || 9528 // dev port
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // All configuration item explanations can be find in https://cli.vuejs.org/config/
 | 
	
		
			
				|  |  |  module.exports = {
 | 
	
		
			
				|  |  | -  /**
 | 
	
		
			
				|  |  | -   * You will need to set publicPath if you plan to deploy your site under a sub path,
 | 
	
		
			
				|  |  | -   * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
 | 
	
		
			
				|  |  | -   * then publicPath should be set to "/bar/".
 | 
	
		
			
				|  |  | -   * In most cases please use '/' !!!
 | 
	
		
			
				|  |  | -   * Detail: https://cli.vuejs.org/config/#publicpath
 | 
	
		
			
				|  |  | -   */
 | 
	
		
			
				|  |  | -  publicPath: process.env.NODE_ENV === 'development' ? '/' : '/GCLS-Personal',
 | 
	
		
			
				|  |  | -  outputDir: 'dist',
 | 
	
		
			
				|  |  | -  assetsDir: 'static',
 | 
	
		
			
				|  |  | -  lintOnSave: false,
 | 
	
		
			
				|  |  | -  productionSourceMap: false,
 | 
	
		
			
				|  |  | -  devServer: {
 | 
	
		
			
				|  |  | -    port: port,
 | 
	
		
			
				|  |  | -    open: true,
 | 
	
		
			
				|  |  | -    overlay: {
 | 
	
		
			
				|  |  | -      warnings: false,
 | 
	
		
			
				|  |  | -      errors: true
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    proxy: {
 | 
	
		
			
				|  |  | -      // change xxx-api/login => mock/login
 | 
	
		
			
				|  |  | -      // detail: https://cli.vuejs.org/config/#devserver-proxy
 | 
	
		
			
				|  |  | -      [process.env.VUE_APP_BASE_API]: {
 | 
	
		
			
				|  |  | -        target: `http://gcls.utschool.cn/`,
 | 
	
		
			
				|  |  | -        // target: `http://gcls.helxsoft.cn/`,
 | 
	
		
			
				|  |  | -        changeOrigin: true,
 | 
	
		
			
				|  |  | -        pathRewrite: {
 | 
	
		
			
				|  |  | -          ['^' + process.env.VUE_APP_BASE_API]: ''
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    },
 | 
	
		
			
				|  |  | -    // after: require('./mock/mock-server.js')
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  configureWebpack: {
 | 
	
		
			
				|  |  | -    // provide the app's title in webpack's name field, so that
 | 
	
		
			
				|  |  | -    // it can be accessed in index.html to inject the correct title.
 | 
	
		
			
				|  |  | -    name: name,
 | 
	
		
			
				|  |  | -    resolve: {
 | 
	
		
			
				|  |  | -      alias: {
 | 
	
		
			
				|  |  | -        '@': resolve('src')
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * You will need to set publicPath if you plan to deploy your site under a sub path,
 | 
	
		
			
				|  |  | +     * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
 | 
	
		
			
				|  |  | +     * then publicPath should be set to "/bar/".
 | 
	
		
			
				|  |  | +     * In most cases please use '/' !!!
 | 
	
		
			
				|  |  | +     * Detail: https://cli.vuejs.org/config/#publicpath
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    publicPath: process.env.NODE_ENV === 'development' ? '/' : '/GCLS-Personal',
 | 
	
		
			
				|  |  | +    outputDir: 'dist',
 | 
	
		
			
				|  |  | +    assetsDir: 'static',
 | 
	
		
			
				|  |  | +    lintOnSave: false,
 | 
	
		
			
				|  |  | +    productionSourceMap: false,
 | 
	
		
			
				|  |  | +    devServer: {
 | 
	
		
			
				|  |  | +        port: port,
 | 
	
		
			
				|  |  | +        open: true,
 | 
	
		
			
				|  |  | +        overlay: {
 | 
	
		
			
				|  |  | +            warnings: false,
 | 
	
		
			
				|  |  | +            errors: true
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        proxy: {
 | 
	
		
			
				|  |  | +            // change xxx-api/login => mock/login
 | 
	
		
			
				|  |  | +            // detail: https://cli.vuejs.org/config/#devserver-proxy
 | 
	
		
			
				|  |  | +            [process.env.VUE_APP_BASE_API]: {
 | 
	
		
			
				|  |  | +                // target: `http://gcls.utschool.cn/`,
 | 
	
		
			
				|  |  | +                target: `http://gcls.helxsoft.cn/`,
 | 
	
		
			
				|  |  | +                changeOrigin: true,
 | 
	
		
			
				|  |  | +                pathRewrite: {
 | 
	
		
			
				|  |  | +                    ['^' + process.env.VUE_APP_BASE_API]: ''
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        // after: require('./mock/mock-server.js')
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    plugins: [
 | 
	
		
			
				|  |  | +    configureWebpack: {
 | 
	
		
			
				|  |  | +        // provide the app's title in webpack's name field, so that
 | 
	
		
			
				|  |  | +        // it can be accessed in index.html to inject the correct title.
 | 
	
		
			
				|  |  | +        name: name,
 | 
	
		
			
				|  |  | +        resolve: {
 | 
	
		
			
				|  |  | +            alias: {
 | 
	
		
			
				|  |  | +                '@': resolve('src')
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        },
 | 
	
		
			
				|  |  | +        plugins: [
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      new CompressionPlugin({
 | 
	
		
			
				|  |  | -        algorithm: 'gzip', // 使用gzip压缩
 | 
	
		
			
				|  |  | -        test: /\.js$|\.html$|\.css$/, // 匹配文件名
 | 
	
		
			
				|  |  | -        minRatio: 0.8, // 压缩率小于0.8才会压缩
 | 
	
		
			
				|  |  | -        threshold: 10240, // 对超过10k的数据压缩
 | 
	
		
			
				|  |  | -        deleteOriginalAssets: false // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
 | 
	
		
			
				|  |  | -      })
 | 
	
		
			
				|  |  | -    ]
 | 
	
		
			
				|  |  | -  },
 | 
	
		
			
				|  |  | -  chainWebpack(config) {
 | 
	
		
			
				|  |  | -    // it can improve the speed of the first screen, it is recommended to turn on preload
 | 
	
		
			
				|  |  | -    config.plugin('preload').tap(() => [
 | 
	
		
			
				|  |  | -      {
 | 
	
		
			
				|  |  | -        rel: 'preload',
 | 
	
		
			
				|  |  | -        // to ignore runtime.js
 | 
	
		
			
				|  |  | -        // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
 | 
	
		
			
				|  |  | -        fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
 | 
	
		
			
				|  |  | -        include: 'initial'
 | 
	
		
			
				|  |  | -      }
 | 
	
		
			
				|  |  | -    ])
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -    // when there are many pages, it will cause too many meaningless requests
 | 
	
		
			
				|  |  | -    config.plugins.delete('prefetch')
 | 
	
		
			
				|  |  | +            new CompressionPlugin({
 | 
	
		
			
				|  |  | +                algorithm: 'gzip', // 使用gzip压缩
 | 
	
		
			
				|  |  | +                test: /\.js$|\.html$|\.css$/, // 匹配文件名
 | 
	
		
			
				|  |  | +                minRatio: 0.8, // 压缩率小于0.8才会压缩
 | 
	
		
			
				|  |  | +                threshold: 10240, // 对超过10k的数据压缩
 | 
	
		
			
				|  |  | +                deleteOriginalAssets: false // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
 | 
	
		
			
				|  |  | +            })
 | 
	
		
			
				|  |  | +        ]
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    chainWebpack(config) {
 | 
	
		
			
				|  |  | +        // it can improve the speed of the first screen, it is recommended to turn on preload
 | 
	
		
			
				|  |  | +        config.plugin('preload').tap(() => [{
 | 
	
		
			
				|  |  | +            rel: 'preload',
 | 
	
		
			
				|  |  | +            // to ignore runtime.js
 | 
	
		
			
				|  |  | +            // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
 | 
	
		
			
				|  |  | +            fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
 | 
	
		
			
				|  |  | +            include: 'initial'
 | 
	
		
			
				|  |  | +        }])
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // 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()
 | 
	
		
			
				|  |  | +        // when there are many pages, it will cause too many meaningless requests
 | 
	
		
			
				|  |  | +        config.plugins.delete('prefetch')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    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$/
 | 
	
		
			
				|  |  | -            }])
 | 
	
		
			
				|  |  | +        // set svg-sprite-loader
 | 
	
		
			
				|  |  | +        config.module
 | 
	
		
			
				|  |  | +            .rule('svg')
 | 
	
		
			
				|  |  | +            .exclude.add(resolve('src/icons'))
 | 
	
		
			
				|  |  |              .end()
 | 
	
		
			
				|  |  | -          config
 | 
	
		
			
				|  |  | -            .optimization.splitChunks({
 | 
	
		
			
				|  |  | -              chunks: 'all',
 | 
	
		
			
				|  |  | -              cacheGroups: {
 | 
	
		
			
				|  |  | -                libs: {
 | 
	
		
			
				|  |  | -                  name: 'chunk-libs',
 | 
	
		
			
				|  |  | -                  test: /[\\/]node_modules[\\/]/,
 | 
	
		
			
				|  |  | -                  priority: 10,
 | 
	
		
			
				|  |  | -                  chunks: 'initial' // only package third parties that are initially dependent
 | 
	
		
			
				|  |  | -                },
 | 
	
		
			
				|  |  | -                elementUI: {
 | 
	
		
			
				|  |  | -                  name: 'chunk-elementUI', // split elementUI into a single package
 | 
	
		
			
				|  |  | -                  priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
 | 
	
		
			
				|  |  | -                  test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
 | 
	
		
			
				|  |  | -                },
 | 
	
		
			
				|  |  | -                commons: {
 | 
	
		
			
				|  |  | -                  name: 'chunk-commons',
 | 
	
		
			
				|  |  | -                  test: resolve('src/components'), // can customize your rules
 | 
	
		
			
				|  |  | -                  minChunks: 3, //  minimum common number
 | 
	
		
			
				|  |  | -                  priority: 5,
 | 
	
		
			
				|  |  | -                  reuseExistingChunk: true
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | +        config.module
 | 
	
		
			
				|  |  | +            .rule('icons')
 | 
	
		
			
				|  |  | +            .test(/\.svg$/)
 | 
	
		
			
				|  |  | +            .include.add(resolve('src/icons'))
 | 
	
		
			
				|  |  | +            .end()
 | 
	
		
			
				|  |  | +            .use('svg-sprite-loader')
 | 
	
		
			
				|  |  | +            .loader('svg-sprite-loader')
 | 
	
		
			
				|  |  | +            .options({
 | 
	
		
			
				|  |  | +                symbolId: 'icon-[name]'
 | 
	
		
			
				|  |  |              })
 | 
	
		
			
				|  |  | -          // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
 | 
	
		
			
				|  |  | -          config.optimization.runtimeChunk('single')
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -      )
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | +            .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' // only package third parties that are initially dependent
 | 
	
		
			
				|  |  | +                                },
 | 
	
		
			
				|  |  | +                                elementUI: {
 | 
	
		
			
				|  |  | +                                    name: 'chunk-elementUI', // split elementUI into a single package
 | 
	
		
			
				|  |  | +                                    priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
 | 
	
		
			
				|  |  | +                                    test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
 | 
	
		
			
				|  |  | +                                },
 | 
	
		
			
				|  |  | +                                commons: {
 | 
	
		
			
				|  |  | +                                    name: 'chunk-commons',
 | 
	
		
			
				|  |  | +                                    test: resolve('src/components'), // can customize your rules
 | 
	
		
			
				|  |  | +                                    minChunks: 3, //  minimum common number
 | 
	
		
			
				|  |  | +                                    priority: 5,
 | 
	
		
			
				|  |  | +                                    reuseExistingChunk: true
 | 
	
		
			
				|  |  | +                                }
 | 
	
		
			
				|  |  | +                            }
 | 
	
		
			
				|  |  | +                        })
 | 
	
		
			
				|  |  | +                        // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
 | 
	
		
			
				|  |  | +                    config.optimization.runtimeChunk('single')
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            )
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |