vue.config.js 4.2 KB

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