vite.config.js 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. import * as path from "path";
  2. const resolve = (dir) => path.resolve(__dirname, dir);
  3. import { fileURLToPath, URL } from 'node:url'
  4. import { defineConfig } from 'vite'
  5. import vue from '@vitejs/plugin-vue'
  6. import AutoImport from 'unplugin-auto-import/vite'
  7. import Components from 'unplugin-vue-components/vite'
  8. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
  9. import postcsspxtoviewport8plugin from 'postcss-px-to-viewport-8-plugin'
  10. import postcssPxToViewport from 'postcss-px-to-viewport'
  11. export default defineConfig({
  12. server:{
  13. cors: true,
  14. proxy: {
  15. // 代理所有 /api 的请求,该求情将被代理到 target 中
  16. '/api': {
  17. // 代理请求之后的请求地址(你的真实接口地址)
  18. target: 'https://cimweb.zjw.sh.cegn.cn:2007/data-business-prod-2/',
  19. // target: 'http://192.168.3.60:9250/',
  20. secure: false,
  21. ws: true,
  22. // 跨域
  23. changeOrigin: true,
  24. rewrite: (path) => path.replace(/^\/api/, '')
  25. },
  26. '/addressapi': {
  27. // 代理请求之后的请求地址(你的真实接口地址)
  28. target: 'https://cimweb.zjw.sh.cegn.cn:2008/',
  29. // target: 'http://192.168.3.60:9250/',
  30. secure: false,
  31. ws: true,
  32. // 跨域
  33. changeOrigin: true,
  34. rewrite: (path) => path.replace(/^\/addressapi/, '')
  35. }
  36. },
  37. },
  38. css:{
  39. postcss:{
  40. plugins:[
  41. // 处理vh的情况
  42. //在github下载的可以处理include
  43. postcssPxToViewport({
  44. //这里宽也根据vh来转换
  45. unitToConvert: 'px', // 要转化的单位
  46. viewportWidth: 1080, // UI设计稿的宽度
  47. unitPrecision: 6, // 转换后的精度,即小数点位数
  48. propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
  49. viewportUnit: 'vh', // 指定需要转换成的视窗单位,默认vw
  50. fontViewportUnit: 'vh', // 指定字体需要转换成的视窗单位,默认vw
  51. selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名
  52. minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
  53. mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
  54. replace: true, // 是否转换后直接更换属性值
  55. minValue:10,
  56. include: [/views\/IOTDataAnalysis/],//postcssPxToViewport只有github上的代码支持了include,npm版本没更新include,坑
  57. landscape: false, // 是否处理横屏情况
  58. }),
  59. postcsspxtoviewport8plugin({
  60. unitToConvert: 'px', // 要转化的单位
  61. viewportWidth: 1920, // UI设计稿的宽度
  62. unitPrecision: 6, // 转换后的精度,即小数点位数
  63. propList: [
  64. 'width',
  65. 'left',
  66. 'right',
  67. 'font-size',
  68. 'margin-left',
  69. 'margin-right',
  70. 'text-indent',
  71. 'padding-left',
  72. 'padding-right',
  73. 'padding',
  74. ], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
  75. viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
  76. fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
  77. selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名
  78. minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
  79. mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
  80. replace: true, // 是否转换后直接更换属性值
  81. exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配
  82. // exclude: [],
  83. include: [
  84. /\/src\/pages\/amap\/factor-monitor.vue/,
  85. ],
  86. landscape: false, // 是否处理横屏情况
  87. }),
  88. // 处理属性转vh的情况
  89. postcsspxtoviewport8plugin({
  90. unitToConvert: 'px', // 要转化的单位
  91. viewportWidth: 1080, // UI设计稿的宽度
  92. unitPrecision: 6, // 转换后的精度,即小数点位数
  93. propList: [
  94. 'height',
  95. 'top',
  96. 'bottom',
  97. 'margin-top',
  98. 'margin-bottom',
  99. 'padding-top',
  100. 'padding-bottom',
  101. 'line-height',
  102. ], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
  103. viewportUnit: 'vh', // 指定需要转换成的视窗单位,默认vw
  104. fontViewportUnit: 'vh', // 指定字体需要转换成的视窗单位,默认vw
  105. selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名
  106. minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
  107. mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
  108. replace: true, // 是否转换后直接更换属性值
  109. exclude: [/node_modules/,], // 设置忽略文件,用正则做目录名匹配
  110. // exclude: [],
  111. include: [
  112. /\/src\/pages\/amap\/factor-monitor.vue/,
  113. ],
  114. landscape: false, // 是否处理横屏情况
  115. }),
  116. ]
  117. }
  118. },
  119. plugins: [vue(), AutoImport({
  120. resolvers: [ElementPlusResolver()],
  121. }),
  122. Components({
  123. resolvers: [ElementPlusResolver()],
  124. }),],
  125. base:'./',
  126. resolve: {
  127. alias: {
  128. '@': fileURLToPath(new URL('./src', import.meta.url))
  129. }
  130. }
  131. })