|  | @@ -3,7 +3,7 @@ const path = require('path')
 | 
	
		
			
				|  |  |  const defaultSettings = require('./src/settings.js')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  function resolve(dir) {
 | 
	
		
			
				|  |  | -    return path.join(__dirname, dir)
 | 
	
		
			
				|  |  | +  return path.join(__dirname, dir)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  const name = defaultSettings.title || '发展汉语' // page title
 | 
	
	
		
			
				|  | @@ -19,119 +19,119 @@ const webpack = require('webpack')
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // 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-Book-Component-NPC',
 | 
	
		
			
				|  |  | -    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.helxsoft.cn/`,
 | 
	
		
			
				|  |  | -                changeOrigin: true,
 | 
	
		
			
				|  |  | -                pathRewrite: {
 | 
	
		
			
				|  |  | -                    ['^' + process.env.VUE_APP_BASE_API]: ''
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            },
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        after: require('./mock/mock-server.js')
 | 
	
		
			
				|  |  | +  /**
 | 
	
		
			
				|  |  | +   * 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-Book-Component-NPC',
 | 
	
		
			
				|  |  | +  outputDir: 'dist',
 | 
	
		
			
				|  |  | +  assetsDir: 'static',
 | 
	
		
			
				|  |  | +  lintOnSave: false,
 | 
	
		
			
				|  |  | +  productionSourceMap: false,
 | 
	
		
			
				|  |  | +  devServer: {
 | 
	
		
			
				|  |  | +    port: port,
 | 
	
		
			
				|  |  | +    open: true,
 | 
	
		
			
				|  |  | +    overlay: {
 | 
	
		
			
				|  |  | +      warnings: false,
 | 
	
		
			
				|  |  | +      errors: true
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    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 webpack.ProvidePlugin({
 | 
	
		
			
				|  |  | -                jQuery: 'jquery',
 | 
	
		
			
				|  |  | -                $: 'jquery'
 | 
	
		
			
				|  |  | -            })
 | 
	
		
			
				|  |  | -        ]
 | 
	
		
			
				|  |  | +    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/`,
 | 
	
		
			
				|  |  | +        changeOrigin: true,
 | 
	
		
			
				|  |  | +        pathRewrite: {
 | 
	
		
			
				|  |  | +          ['^' + process.env.VUE_APP_BASE_API]: ''
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  |      },
 | 
	
		
			
				|  |  | -    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')
 | 
	
		
			
				|  |  | +    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')
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    plugins: [
 | 
	
		
			
				|  |  | +      new webpack.ProvidePlugin({
 | 
	
		
			
				|  |  | +        jQuery: 'jquery',
 | 
	
		
			
				|  |  | +        $: 'jquery'
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    ]
 | 
	
		
			
				|  |  | +  },
 | 
	
		
			
				|  |  | +  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$/
 | 
	
		
			
				|  |  | -                }])
 | 
	
		
			
				|  |  | -                .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')
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    // 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' // 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')
 | 
	
		
			
				|  |  | +    })
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  }
 |