vue.config.js 3.9 KB

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