vue.config.js 5.4 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
    host: '0.0.0.0',
30
    port: 8010,
潘际乾 committed
31 32 33 34 35 36
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    proxy: {
liuxin committed
37
      '/gjjs/business/': {
38
        target: 'http://192.168.0.110:9999',
潘际乾 committed
39 40
        changeOrigin: true,
        pathRewrite: {
liuxin committed
41 42 43 44 45 46 47 48
          '^/gjjs/business': '/gjjs/business'
        }
      },
      '/gjjs/report/': {
        target: 'http://127.0.0.1:8082',
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/report': '/gjjs/report'
潘际乾 committed
49 50
        }
      },
51
      
liuxin committed
52 53 54 55 56
      '/gjjs/devtools/': {
        target: 'http://127.0.0.1:8083',
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/devtools': '/gjjs/devtools'
liu committed
57 58
        }
      },
59
      '/gjjs/elec/': {
zhoutian committed
60
        target: 'http://127.0.0.1:8084',
61 62 63 64 65
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/elec': '/gjjs/elec'
        }
      },
66
      '/gjjs/manager/': {
潘际乾 committed
67 68 69
        target: 'http://127.0.0.1:8089',
        changeOrigin: true,
        pathRewrite: {
70
          '^/gjjs/manager': '/gjjs/manager'
潘际乾 committed
71 72
        }
      },
吴佳 committed
73
      '/gjjs/service/': {
74
        target: 'http://127.0.0.1:9999',
吴佳 committed
75 76 77 78
        changeOrigin: true,
        pathRewrite: {
          '^/gjjs/service': '/gjjs/service'
        }
79
      },
80

潘际乾 committed
81 82 83 84
      /**
       * ocr智能识别服务
       */
      '/ocr/': {
85 86
        // target: 'http://192.168.0.110:5010',
        target: 'http://127.0.0.1:5000',
潘际乾 committed
87 88 89 90
        changeOrigin: true,
        pathRewrite: {
          '^/ocr': '/'
        }
潘际乾 committed
91 92 93 94 95
      },
      /**
       * 电证系统
       */
      '/esfeserver/': {
潘际乾 committed
96 97
        // target: 'http://192.168.0.110:8090',
        target: 'http://114.115.138.98:8300',
潘际乾 committed
98 99 100 101
        changeOrigin: true,
        pathRewrite: {
          '^/esfeserver': '/esfeserver'
        }
潘际乾 committed
102 103 104 105 106 107
      }
    }
  },
  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.
108
    // devtool: 'source-map',
潘际乾 committed
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 139 140 141 142 143 144 145 146
    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', [{
147
              // `runtime` must same as runtimeChunk name. default is `runtime`
潘际乾 committed
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 173 174 175 176 177 178 179 180
              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')
        }
      )
  }
}