vue.config.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. const { defineConfig } = require('@vue/cli-service')
  2. const webpack = require('webpack')
  3. const cdn = {
  4. css: [
  5. // '//unpkg.com/element-ui@2.10.1/lib/theme-chalk/index.css'
  6. ],
  7. js: [
  8. '//cdn-common.jianyu360.com/cdn/lib/vue/2.6.14/vue.runtime.min.js',
  9. '//cdn-common.jianyu360.com/cdn/lib/vue-router/3.1.5/vue-router.min.js',
  10. '//cdn-common.jianyu360.com/cdn/lib/vuex/3.4.0/vuex.min.js',
  11. '//cdn-common.jianyu360.com/cdn/lib/axios/0.19.2/axios.min.js',
  12. '//cdn-common.jianyu360.com/cdn/lib/js-cookie/2.2.1/js.cookie.min.js',
  13. '//cdn-common.jianyu360.com/cdn/lib/moment/2.29.1/min/moment.min.js'
  14. ]
  15. }
  16. const externals = {
  17. vue: 'Vue',
  18. 'vue-router': 'VueRouter',
  19. vuex: 'Vuex',
  20. axios: 'axios',
  21. 'js-cookie': 'Cookies',
  22. moment: 'moment'
  23. }
  24. module.exports = defineConfig({
  25. publicPath: process.env.VUE_APP_BASE_URL,
  26. outputDir: 'page_pc_social',
  27. transpileDependencies: true,
  28. lintOnSave: true,
  29. productionSourceMap: false,
  30. devServer: {
  31. port: '8080',
  32. open: false,
  33. client: {
  34. overlay: {
  35. errors: true,
  36. warnings: false
  37. }
  38. },
  39. historyApiFallback: true,
  40. proxy: {
  41. '^/jyapi': {
  42. target: 'https://jybx3-webtest.jydev.jianyu360.com/',
  43. changeOrigin: true,
  44. logLevel: 'debug'
  45. },
  46. '^/publicapply': {
  47. target: 'https://jybx3-webtest.jydev.jianyu360.com/',
  48. changeOrigin: true,
  49. logLevel: 'debug'
  50. },
  51. '^/entbase': {
  52. target: 'https://jybx3-webtest.jydev.jianyu360.com/',
  53. changeOrigin: true,
  54. logLevel: 'debug'
  55. },
  56. '^/bigmember': {
  57. target: 'https://jybx3-webtest.jydev.jianyu360.com/',
  58. changeOrigin: true,
  59. logLevel: 'debug'
  60. },
  61. '^/aiChat': {
  62. target: 'https://jybx3-webtest.jydev.jianyu360.com/',
  63. changeOrigin: true,
  64. logLevel: 'debug'
  65. },
  66. '^/jypay': {
  67. target: 'https://jybx3-webtest.jydev.jianyu360.com/',
  68. changeOrigin: true,
  69. logLevel: 'debug'
  70. }
  71. }
  72. },
  73. css: {
  74. loaderOptions: {
  75. sass: {
  76. additionalData: '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";'
  77. }
  78. }
  79. },
  80. chainWebpack: config => {
  81. if (process.env.NODE_ENV === 'production') {
  82. // 生产环境配置
  83. config.externals(externals)
  84. config.plugin('html').tap(args => {
  85. // html中添加cdn
  86. args[0].cdn = cdn
  87. return args
  88. })
  89. config.optimization.minimize(true)
  90. .minimizer('terser')
  91. .tap(args => {
  92. const { terserOptions } = args[0]
  93. terserOptions.compress.drop_console = true
  94. terserOptions.compress.drop_debugger = true
  95. return args
  96. })
  97. }
  98. config.plugin('provide').use(webpack.ProvidePlugin,[{
  99. 'window.Quill': 'quill/dist/quill.js',
  100. 'Quill': 'quill/dist/quill.js'
  101. }])
  102. },
  103. pwa: {
  104. iconPaths: {
  105. favicon32: 'favicon.ico',
  106. favicon16: 'favicon.ico',
  107. appleTouchIcon: 'favicon.ico',
  108. maskIcon: 'favicon.ico',
  109. msTileImage: 'favicon.ico'
  110. }
  111. }
  112. })