vue.config.js 4.8 KB

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