vue.config.js 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. var CompressionPlugin = require('compression-webpack-plugin');
  2. const TerserPlugin = require('terser-webpack-plugin');
  3. module.exports = {
  4. publicPath: process.env.NODE_ENV === 'production'
  5. ? '/'
  6. : '/',
  7. outputDir: 'dist',
  8. lintOnSave: false,
  9. devServer: {
  10. // public: 'http://10.113.248.92:8080',
  11. hot: true,
  12. disableHostCheck: true,
  13. // proxy: {
  14. // '/api': {
  15. // target: 'https://nczc.hnoa.cn/',
  16. // ws: true,
  17. // changeOrigin: true,
  18. // pathRewrite: {
  19. // '^/api': ''
  20. // }
  21. // }
  22. // }
  23. // proxy: {
  24. // '/api': {
  25. // target: 'http://cognitive.wistcm.com:10086/',
  26. // ws: true,
  27. // changeOrigin: true,
  28. // pathRewrite: {
  29. // '^/api': ''
  30. // }
  31. // }
  32. // }
  33. },
  34. productionSourceMap: false,
  35. configureWebpack: {
  36. plugins: [
  37. new CompressionPlugin({
  38. algorithm: 'gzip', // 使用gzip压缩
  39. test: /\.js$|\.css$/, // 匹配文件名
  40. filename: '[path][base].gz', // 压缩后的文件名(保持原文件名,后缀加.gz)
  41. minRatio: 1, // 压缩率小于1才会压缩
  42. threshold: 10240, // 对超过10k的数据压缩
  43. deleteOriginalAssets: false, // 是否删除未压缩的源文件,谨慎设置,如果希望提供非gzip的资源,可不设置或者设置为false(比如删除打包后的gz后还可以加载到原始资源文件)
  44. }),
  45. ],
  46. optimization: {
  47. // 生产环境移除console和debugger
  48. minimizer: [
  49. new TerserPlugin({
  50. terserOptions: {
  51. ecma: undefined,
  52. warnings: false,
  53. parse: {},
  54. compress: {
  55. drop_console: true,
  56. drop_debugger: true,
  57. pure_funcs: ['console.log']
  58. }
  59. },
  60. }),
  61. ]
  62. },
  63. // css: {
  64. // loaderOptions: {
  65. // postcss: {
  66. // plugins: [
  67. // require('postcss-px-to-viewport')({
  68. // unitToConvert: 'px', // 需要转换的单位
  69. // viewportWidth: 1920, // 视口宽度,等同于设计稿宽度
  70. // unitPrecision: 5, // 精确到小数点后几位
  71. // /**
  72. // * 将会被转换的css属性列表,
  73. // * 设置为 * 表示全部,如:['*']
  74. // * 在属性的前面或后面设置*,如:['*position*'],*position* 表示所有包含 position 的属性,如 background-position-y
  75. // * 设置为 !xx 表示不匹配xx的那些属性,如:['!letter-spacing'] 表示除了letter-spacing 属性之外的其他属性
  76. // * 还可以同时使用 ! 和 * ,如['!font*'] 表示除了font-size、 font-weight ...这些之外属性之外的其他属性名头部是‘font’的属性
  77. // * */
  78. // propList: ['*'],
  79. // viewportUnit: 'vw', // 需要转换成为的单位
  80. // fontViewportUnit: 'vw',// 需要转换称为的字体单位
  81. // /**
  82. // * 需要忽略的选择器,即这些选择器对应的属性值不做单位转换
  83. // * 设置为字符串,转换器在做转换时会忽略那些选择器中包含该字符串的选择器,如:['body']会匹配到 .body-class,也就意味着.body-class对应的样式设置不会被转换
  84. // * 设置为正则表达式,在做转换前会先校验选择器是否匹配该正则,如果匹配,则不进行转换,如[/^body$/]会匹配到 body 但是不会匹配到 .body
  85. // */
  86. // selectorBlackList: [],
  87. // minPixelValue: 1, // 最小的像素单位值
  88. // mediaQuery: false, // 是否转换媒体查询中设置的属性值
  89. // replace: true, // 替换包含vw的规则,而不是添加回退
  90. // /**
  91. // * 忽略一些文件,如'node_modules'
  92. // * 设置为正则表达式,将会忽略匹配该正则的所有文件
  93. // * 如果设置为数组,那么该数组内的元素都必须是正则表达式
  94. // */
  95. // exclude: [],
  96. // landscape: false, // 是否自动加入 @media (orientation: landscape),其中的属性值是通过横屏宽度来转换的
  97. // landscapeUnit: 'vw', // 横屏单位
  98. // landscapeWidth: 1334 // 横屏宽度
  99. // })
  100. // ]
  101. // }
  102. // }
  103. // }
  104. }
  105. }
  106. // // 引入等比适配插件
  107. // const px2rem = require('postcss-px2rem')
  108. // // 配置基本大小
  109. // const postcss = px2rem({
  110. // // 基准大小 baseSize,需要和rem.js中相同
  111. // remUnit: 16
  112. // })
  113. // // 使用等比适配插件
  114. // module.exports = {
  115. // lintOnSave: true,
  116. // css: {
  117. // loaderOptions: {
  118. // postcss: {
  119. // plugins: [
  120. // postcss
  121. // ]
  122. // }
  123. // }
  124. // }
  125. // }