vue.config.js 5.18 KB
Newer Older
潘际乾 committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
'use strict'
const path = require('path')

function resolve(dir) {
  return path.join(__dirname, dir)
}

// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, Mac: sudo npm run
// You can change the port by the following method:
// port = 9527 npm run dev OR npm run dev --port = 9527
const port = process.env.port || process.env.npm_config_port || 8010 // 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: '/',
  outputDir: 'dist',
  assetsDir: 'static',
  productionSourceMap: false,
  devServer: {
29
    port: 8010,
潘际乾 committed
30 31 32 33 34 35
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    proxy: {
liuxin committed
36
      '/gjjs/business/': {
潘际乾 committed
37 38 39
        target: 'http://127.0.0.1:8081',
        changeOrigin: true,
        pathRewrite: {
liuxin committed
40 41 42 43 44 45 46 47
          '^/gjjs/business': '/gjjs/business'
        }
      },
      '/gjjs/report/': {
        target: 'http://127.0.0.1:8082',
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/report': '/gjjs/report'
潘际乾 committed
48 49
        }
      },
50
      
liuxin committed
51 52 53 54 55
      '/gjjs/devtools/': {
        target: 'http://127.0.0.1:8083',
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/devtools': '/gjjs/devtools'
liu committed
56 57
        }
      },
58
      '/gjjs/elec/': {
zhoutian committed
59
        target: 'http://127.0.0.1:8084',
60 61 62 63 64
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/elec': '/gjjs/elec'
        }
      },
潘际乾 committed
65 66 67 68 69 70 71
      '/gjjs/test/': {
        target: 'http://127.0.0.1:8089',
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/test': '/gjjs/test'
        }
      },
72

潘际乾 committed
73 74 75 76
      /**
       * ocr智能识别服务
       */
      '/ocr/': {
77 78
        // target: 'http://192.168.0.110:5010',
        target: 'http://127.0.0.1:5000',
潘际乾 committed
79 80 81 82
        changeOrigin: true,
        pathRewrite: {
          '^/ocr': '/'
        }
潘际乾 committed
83 84 85 86 87
      },
      /**
       * 电证系统
       */
      '/esfeserver/': {
潘际乾 committed
88 89
        // target: 'http://192.168.0.110:8090',
        target: 'http://114.115.138.98:8300',
潘际乾 committed
90 91 92 93
        changeOrigin: true,
        pathRewrite: {
          '^/esfeserver': '/esfeserver'
        }
潘际乾 committed
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
      }
    }
  },
  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.
    devtool: 'source-map',
    resolve: {
      alias: {
        '~': resolve('src')
      }
    },
    output: {
      // 方便浏览器看源码
      devtoolModuleFilenameTemplate: (info) => {
        const resPath = info.resourcePath;
        if ((/\.vue$/.test(resPath) && info.allLoaders !== '') || /node_modules/.test(resPath)) {
          return `webpack:///${resPath}?${info.hash}`;
        }
        return `webpack:///${resPath.replace('./src', 'SourceCode')}`;
      }
    }
  },
  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')

    config
      .when(process.env.NODE_ENV !== 'development',
        config => {
          config
            .plugin('ScriptExtHtmlWebpackPlugin')
            .after('html')
            .use('script-ext-html-webpack-plugin', [{
139
              // `runtime` must same as runtimeChunk name. default is `runtime`
潘际乾 committed
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
              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')
        }
      )
  }
}