vue.config.js 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. headers: {
  23. 'Access-Control-Allow-Origin': '*'
  24. },
  25. proxy: getProxyOfDomain('https://jybx3-webtest.jydev.jianyu360.com/') || getProxyOfIp('http://127.0.0.1')
  26. },
  27. css: {
  28. loaderOptions: {
  29. sass: {
  30. prependData: '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";'
  31. }
  32. }
  33. },
  34. chainWebpack: config => {
  35. // single-spa
  36. if (!process.env.VUE_APP_ALONE) {
  37. if (process.env.NODE_ENV === 'production') {
  38. // 生产环境配置
  39. config.externals(external)
  40. config.plugin('html').tap(args => {
  41. // html中添加cdn
  42. args[0].cdn = cdn
  43. return args
  44. })
  45. config.optimization.minimize(true)
  46. .minimizer('terser')
  47. .tap(args => {
  48. const { terserOptions } = args[0]
  49. terserOptions.compress.drop_console = true
  50. terserOptions.compress.drop_debugger = true
  51. return args
  52. })
  53. } else {
  54. config.devServer.set('inline', false)
  55. config.devServer.set('hot', true)
  56. }
  57. }
  58. // 分析静态资源
  59. if (process.env.use_analyzer) {
  60. config
  61. .plugin('webpack-bundle-analyzer')
  62. .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  63. }
  64. },
  65. configureWebpack: {
  66. output: {
  67. library: 'bigMemberSubApp',
  68. libraryTarget: 'umd',
  69. jsonpFunction: `webpackJsonp_${packageName}`
  70. },
  71. plugins: [
  72. new webpack.ProvidePlugin({
  73. jQuery: 'jquery',
  74. $: 'jquery'
  75. })
  76. ]
  77. }
  78. }