vue.config.js 4.1 KB

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