vue.config.js 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. const externals = {
  2. // 把导入语句里的 vue 替换成运行环境(html)里的全局变量 Vue
  3. vue: 'Vue',
  4. 'vue-router': 'VueRouter',
  5. vuex: 'Vuex',
  6. axios: 'axios',
  7. echarts: 'echarts',
  8. 'v-charts': 'vcharts', // 这个vcharts没有全局变量,是被直接挂载到vue上了
  9. 'lodash': '_', // lodash在全局变量为_
  10. moment: 'moment'
  11. }
  12. const cdn = {
  13. css: [
  14. // '//unpkg.com/element-ui@2.10.1/lib/theme-chalk/index.css'
  15. ],
  16. jsdelivr: [
  17. '//cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js',
  18. '//cdn.jsdelivr.net/npm/vue-router@3.1.5/dist/vue-router.min.js',
  19. '//cdn.jsdelivr.net/npm/vuex@3.4.0/dist/vuex.min.js',
  20. '//cdn.jsdelivr.net/npm/axios@0.19.2/dist/axios.min.js',
  21. '//cdn.jsdelivr.net/npm/echarts@4.8.0/dist/echarts.min.js',
  22. '//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js',
  23. '//cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js',
  24. '//cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js'
  25. ],
  26. js: [
  27. '//cdn-common.jianyu360.cn/cdn/lib/vue/2.6.11/vue.min.js',
  28. '//cdn-common.jianyu360.cn/cdn/lib/vue-router/3.1.5/vue-router.min.js',
  29. '//cdn-common.jianyu360.cn/cdn/lib/vuex/3.4.0/vuex.min.js',
  30. '//cdn-common.jianyu360.cn/cdn/lib/axios/0.19.2/axios.min.js',
  31. '//cdn-common.jianyu360.cn/cdn/lib/echarts/4.8.0/echarts.min.js',
  32. '//cdn.jsdelivr.net/npm/v-charts@1.19.0/lib/index.min.js',
  33. '//cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js',
  34. '//cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js'
  35. ]
  36. }
  37. module.exports = {
  38. parallel: false,
  39. productionSourceMap: false,
  40. outputDir: 'page_big_pc',
  41. publicPath: process.env.VUE_APP_BASE_PUBLIC,
  42. lintOnSave: true,
  43. devServer: {
  44. port: '8080',
  45. disableHostCheck: true,
  46. proxy: {
  47. '^/bigmember': {
  48. target: 'http://web-jytest.jydev.jianyu360.com',
  49. changeOrigin: true,
  50. logLevel: 'debug',
  51. pathRewrite: {
  52. '^/bigmember': '/bigmember'
  53. }
  54. },
  55. '^/jydoc': {
  56. target: 'http://web-jytest.jydev.jianyu360.com',
  57. changeOrigin: true,
  58. logLevel: 'debug'
  59. }
  60. }
  61. },
  62. css: {
  63. loaderOptions: {
  64. sass: {
  65. prependData: '@import "@/assets/style/_mixin.scss";@import "@/assets/style/_variables.scss";'
  66. }
  67. }
  68. },
  69. chainWebpack: config => {
  70. // single-spa
  71. if (!process.env.VUE_APP_ALONE) {
  72. config.devServer.set('inline', false)
  73. config.devServer.set('hot', true)
  74. if (process.env.NODE_ENV === 'production') {
  75. config.externals(externals)
  76. config.plugin('html').tap(args => {
  77. // html中添加cdn
  78. args[0].cdn = cdn
  79. return args
  80. })
  81. } else {
  82. config.output.filename('js/[name].js')
  83. }
  84. }
  85. // 分析静态资源
  86. if (process.env.use_analyzer) {
  87. config
  88. .plugin('webpack-bundle-analyzer')
  89. .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
  90. }
  91. },
  92. filenameHashing: false
  93. }