vue.config.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. const packageName = require('./package.json').name
  2. const webpack = require('webpack')
  3. const { cdn, getProxyOfDomain, getProxyOfIp } = require('./config')
  4. const external = {
  5. vue: 'Vue',
  6. 'vue-router': 'VueRouter',
  7. vuex: 'Vuex',
  8. axios: 'axios',
  9. lodash: '_',
  10. // 解决画像visualMap不显示问题
  11. // echarts: 'echarts',
  12. // moment: 'moment',
  13. jquery: '$'
  14. }
  15. module.exports = {
  16. productionSourceMap: false,
  17. outputDir: 'page_big_pc',
  18. publicPath: process.env.VUE_APP_BASE_PUBLIC,
  19. lintOnSave: true,
  20. devServer: {
  21. disableHostCheck: true,
  22. proxy: {
  23. // 反爬虫接口代理
  24. // '/subVipPortrait/winner': {
  25. // target: 'http://192.168.20.178:8800',
  26. // changeOrigin: true,
  27. // logLevel: 'debug'
  28. // },
  29. '^/bigmember': {
  30. // target: 'https://jybx2-webtest.jydev.jianyu360.com',
  31. target: 'http://192.168.3.240:814',
  32. changeOrigin: true,
  33. logLevel: 'debug',
  34. pathRewrite: {
  35. '^/bigmember': '/bigmember'
  36. }
  37. },
  38. '^/jypay': {
  39. // target: 'https://jybx2-webtest.jydev.jianyu360.com',
  40. target: 'http://192.168.3.240:86',
  41. changeOrigin: true,
  42. logLevel: 'debug'
  43. },
  44. '^/publicapply': {
  45. // target: 'https://jybx2-webtest.jydev.jianyu360.com',
  46. target: 'http://192.168.3.240:828',
  47. changeOrigin: true,
  48. logLevel: 'debug'
  49. },
  50. '^/subscribepay': {
  51. target: 'https://jybx2-webtest.jydev.jianyu360.com',
  52. // target: 'http://127.0.0.1:86',
  53. changeOrigin: true,
  54. logLevel: 'debug'
  55. },
  56. '^/salesLeads': {
  57. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  58. // target: 'http://127.0.0.1:8881',
  59. changeOrigin: true,
  60. logLevel: 'debug'
  61. },
  62. '^/privatedata': {
  63. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  64. // target: 'http://127.0.0.1:829',
  65. changeOrigin: true,
  66. logLevel: 'debug'
  67. },
  68. '^/jyCoupon': {
  69. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  70. // target: 'http://127.0.0.1:829',
  71. changeOrigin: true,
  72. logLevel: 'debug'
  73. },
  74. '^/jymessageCenter': {
  75. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  76. // target: 'http://127.0.0.1:829',
  77. changeOrigin: true,
  78. logLevel: 'debug'
  79. },
  80. '^/entbase': {
  81. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  82. // target: 'http://127.0.0.1:829',
  83. changeOrigin: true,
  84. logLevel: 'debug'
  85. },
  86. '^/userCenter': {
  87. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  88. // target: 'http://127.0.0.1:829',
  89. changeOrigin: true,
  90. logLevel: 'debug'
  91. },
  92. '^/entnicheNew': {
  93. target: 'https://jybx3-webtest.jydev.jianyu360.com',
  94. // target: 'http://127.0.0.1:829',
  95. changeOrigin: true,
  96. logLevel: 'debug'
  97. },
  98. '^/jyCoupon': {
  99. // target: 'https://jybx2-webtest.jydev.jianyu360.com',
  100. target: 'http://192.168.3.240:827',
  101. changeOrigin: true,
  102. logLevel: 'debug'
  103. },
  104. '^/marketing': {
  105. // target: 'https://jybx2-webtest.jydev.jianyu360.com',
  106. target: 'http://192.168.3.240:8077',
  107. changeOrigin: true,
  108. logLevel: 'debug',
  109. // pathRewrite: {
  110. // '': '/jyapi'
  111. // }
  112. }
  113. },
  114. headers: {
  115. 'Access-Control-Allow-Origin': '*'
  116. }
  117. // proxy: getProxyOfDomain('https://web2-jytest.jydev.jianyu360.com') || getProxyOfIp('http://127.0.0.1')
  118. },
  119. css: {
  120. loaderOptions: {
  121. sass: {
  122. prependData: '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";'
  123. }
  124. }
  125. },
  126. chainWebpack: config => {
  127. // single-spa
  128. if (!process.env.VUE_APP_ALONE) {
  129. if (process.env.NODE_ENV === 'production') {
  130. // 生产环境配置
  131. config.externals(external)
  132. config.plugin('html').tap(args => {
  133. // html中添加cdn
  134. args[0].cdn = cdn
  135. return args
  136. })
  137. config.optimization.minimize(true)
  138. .minimizer('terser')
  139. .tap(args => {
  140. const { terserOptions } = args[0]
  141. terserOptions.compress.drop_console = true
  142. terserOptions.compress.drop_debugger = true
  143. return args
  144. })
  145. } else {
  146. config.devServer.set('inline', false)
  147. config.devServer.set('hot', true)
  148. }
  149. }
  150. // 分析静态资源
  151. if (process.env.use_analyzer) {
  152. config
  153. .plugin('webpack-bundle-analyzer')
  154. .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  155. }
  156. },
  157. configureWebpack: {
  158. output: {
  159. library: 'bigMemberSubApp',
  160. libraryTarget: 'umd',
  161. jsonpFunction: `webpackJsonp_${packageName}`
  162. },
  163. plugins: [
  164. new webpack.ProvidePlugin({
  165. jQuery: 'jquery',
  166. $: 'jquery'
  167. })
  168. ]
  169. }
  170. }