vue.config.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. const path = require('path')
  2. const CompressionPlugin = require("compression-webpack-plugin")
  3. const { config } = require('process');
  4. function resolve(dir) {
  5. return path.join(__dirname, dir)
  6. }
  7. module.exports = {
  8. publicPath: "./",
  9. productionSourceMap: false,
  10. // 入口设置
  11. pages: {
  12. datav: {
  13. entry: 'src/pages/datav/main.js',
  14. template: 'src/pages/datav/index.html',
  15. title: 'datav',
  16. filename: 'datav.html',
  17. chunks: ['chunk-libs', 'chunk-commons','datav','chunk-element-ui']
  18. },
  19. index: {
  20. entry: 'src/main.js',
  21. template: 'public/index.html',
  22. title: 'index.html',
  23. filename: 'index.html',
  24. chunks: ['index','chunk-libs','chunk-commons',
  25. 'chunk-element-ui','chunk-jeeplus-form',
  26. 'chunk-jeeplus-filemanager','chunk-jeeplus-gencode',
  27. 'chunk-jeeplus-flowable', 'chunk-echarts','chunk-brace'
  28. ,'chunk-vxe-table','chunk-ali-oss','chunk-exceljs'
  29. ]
  30. }
  31. },
  32. chainWebpack: (config) => {
  33. config.resolve.alias.set('@/', resolve('src'))
  34. // config
  35. // .plugin('webpack-bundle-analyzer')
  36. // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin);
  37. // if (process.env.NODE_ENV === 'production') {
  38. config.plugin('compressionPlugin').use(new CompressionPlugin({
  39. test: new RegExp('\\.(js|css)$'), // 匹配文件名
  40. threshold: 10240, // 对超过10k的数据压缩
  41. deleteOriginalAssets: false, // 不删除源文件
  42. minRatio: 0.8,
  43. algorithm:'gzip'
  44. }))
  45. // }
  46. },
  47. configureWebpack: (config) => {
  48. let optimization = {
  49. splitChunks: {
  50. chunks: "all",
  51. minSize: 30 * 1024, // 允许新拆出 chunk 的最小体积,也是异步 chunk 公共模块的强制拆分体积
  52. cacheGroups: {
  53. libs: { // 第三方库
  54. name: "chunk-libs",
  55. test: /[\\/]node_modules[\\/]/,
  56. priority: 10,
  57. chunks: "initial", // 只打包初始时依赖的第三方
  58. enforce: true
  59. },
  60. 'element-ui': {
  61. name: "chunk-element-ui",
  62. test: /[\\/]node_modules[\\/]element-ui[\\/]/,
  63. priority: 20,
  64. enforce: true
  65. },
  66. 'jeeplus-filemanager': {
  67. name: "chunk-jeeplus-filemanager",
  68. test: /[\\/]node_modules[\\/]jeeplus-filemanager[\\/]/,
  69. priority: 20,
  70. enforce: true
  71. },
  72. 'jeeplus-form': {
  73. name: "chunk-jeeplus-form",
  74. test: /[\\/]node_modules[\\/]jeeplus-form[\\/]/,
  75. priority: 20,
  76. enforce: true
  77. },
  78. 'jeeplus-gencode': {
  79. name: "chunk-jeeplus-gencode",
  80. test: /[\\/]node_modules[\\/]jeeplus-gencode[\\/]/,
  81. priority: 20,
  82. enforce: true
  83. },
  84. 'jeeplus-flowable': {
  85. name: "chunk-jeeplus-flowable",
  86. test: /[\\/]node_modules[\\/]jeeplus-flowable[\\/]/,
  87. priority: 20,
  88. enforce: true
  89. },
  90. 'echarts': {
  91. name: "chunk-echarts",
  92. test: /[\\/]node_modules[\\/]echarts[\\/]/,
  93. priority: 20,
  94. enforce: true
  95. },
  96. 'brace': {
  97. name: "chunk-brace",
  98. test: /[\\/]node_modules[\\/]brace[\\/]/,
  99. priority: 20,
  100. enforce: true
  101. },
  102. 'vxe-table': {
  103. name: "chunk-vxe-table",
  104. test: /[\\/]node_modules[\\/]vxe-table[\\/]/,
  105. priority: 20,
  106. enforce: true
  107. },
  108. 'ali-oss': {
  109. name: "chunk-ali-oss",
  110. test: /[\\/]node_modules[\\/]ali-oss[\\/]/,
  111. priority: 20,
  112. enforce: true
  113. },
  114. 'exceljs': {
  115. name: "chunk-exceljs",
  116. test: /[\\/]node_modules[\\/]exceljs[\\/]/,
  117. priority: 20,
  118. enforce: true
  119. },
  120. commons: { // 公共模块包
  121. name: `chunk-commons`,
  122. minChunks: 2,
  123. priority: 0,
  124. reuseExistingChunk: true,
  125. enforce: true
  126. }
  127. },
  128. }
  129. }
  130. Object.assign(config, {
  131. optimization
  132. })
  133. },
  134. css: {
  135. loaderOptions: {
  136. less: {
  137. modifyVars: {
  138. },
  139. javascriptEnabled: true,
  140. }
  141. }
  142. },
  143. devServer: {
  144. index: '/index.html', // 运行时,默认打开index页面
  145. port: 3000,
  146. proxy: {
  147. '/api': {
  148. target: process.env.VUE_APP_SERVER_URL,
  149. changeOrigin: true,
  150. pathRewrite: {
  151. '^/api': ''
  152. }
  153. },
  154. '/userfiles': {
  155. target: process.env.VUE_APP_SERVER_URL,
  156. changeOrigin: true,
  157. pathRewrite: {
  158. '^/userfiles': '/userfiles'
  159. }
  160. }
  161. }
  162. },
  163. lintOnSave: undefined
  164. }