Newer
Older
urbanLifeline_YanAn / vite.config.js
@zhangzhihui zhangzhihui on 15 Nov 5 KB 工单配置
  1. import { defineConfig, loadEnv } from 'vite';
  2. import path from 'path';
  3. import createVitePlugins from './vite/plugins';
  4. import postCssPxToRem from 'postcss-pxtorem';
  5. import autoprefixer from 'autoprefixer';
  6.  
  7. const Timestamp = new Date().getTime(); //随机时间戳
  8.  
  9. // const targetUrl = 'http://192.168.48.145:13000'; //张鸿志
  10. const zhz = 'http://192.168.20.5:13002'; //张鸿志
  11. const zyh = 'http://192.168.16.105:13002'; //张亚辉
  12. // const targetUrl = 'https://server2.wh-nf.cn:8088/prod-api'; //线上
  13. const targetUrl = 'http://192.168.16.135:13000'; //徐云欣
  14.  
  15. // https://vitejs.dev/config/
  16. export default defineConfig(({ mode, command }) => {
  17. const env = loadEnv(mode, process.cwd());
  18. const { VITE_APP_ENV } = env;
  19. return {
  20. // 部署生产环境和开发环境下的URL。
  21. // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
  22. // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
  23. base: VITE_APP_ENV === 'production' ? '/' : '/',
  24. // 是否开启eslint保存检测
  25. lintOnSave: false,
  26. plugins: createVitePlugins(env, command === 'build'),
  27. resolve: {
  28. // https://cn.vitejs.dev/config/#resolve-alias
  29. alias: {
  30. // 设置路径
  31. '~': path.resolve(__dirname, './'),
  32. // 设置别名
  33. '@': path.resolve(__dirname, './src'),
  34. },
  35. // https://cn.vitejs.dev/config/#resolve-extensions
  36. extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'],
  37. },
  38. // vite 相关配置
  39. server: {
  40. port: 8888,
  41. host: true,
  42. hot: true, //自动保存
  43. cors: true,
  44. hmr: true, //vue3 vite配置热更新不用手动刷新
  45. open: true,
  46. proxy: {
  47. '/business': {
  48. target: targetUrl, //测试服务
  49. changeOrigin: true,
  50. rewrite: p => p.replace(/^\/business/, '/business'),
  51. },
  52. '/system': {
  53. target: targetUrl, //测试服务
  54. changeOrigin: true,
  55. rewrite: p => p.replace(/^\/system/, '/system'),
  56. },
  57. '/auth': {
  58. target: targetUrl, //测试服务
  59. changeOrigin: true,
  60. rewrite: p => p.replace(/^\/auth/, '/auth'),
  61. },
  62. '/code': {
  63. target: targetUrl, //测试服务
  64. changeOrigin: true,
  65. rewrite: p => p.replace(/^\/code/, '/code'),
  66. },
  67. '/amap': {
  68. target: 'https://restapi.amap.com', //geocode服务
  69. changeOrigin: true,
  70. rewrite: p => p.replace(/^\/amap/, ''),
  71. },
  72. '/prod-api': {
  73. target: targetUrl, //测试服务
  74. changeOrigin: true,
  75. logLevel: 'debug',
  76. rewrite: p => p.replace(/^\/prod-api/, ''),
  77. },
  78. '/zhz': {
  79. target: zhz, //测试服务
  80. changeOrigin: true,
  81. logLevel: 'debug',
  82. rewrite: p => p.replace(/^\/zhz/, ''),
  83. },
  84. '/zyh': {
  85. target: zyh, //测试服务
  86. changeOrigin: true,
  87. logLevel: 'debug',
  88. rewrite: p => p.replace(/^\/zyh/, ''),
  89. },
  90. // 洪山服务
  91. '/hsApi': {
  92. target: 'http://42.193.13.68:8104', //测试服务
  93. changeOrigin: true,
  94. logLevel: 'debug',
  95. rewrite: p => p.replace(/^\/hsApi/, ''),
  96. },
  97. //百度全景
  98. '/bdApi': {
  99. // target: 'http://192.168.16.34:8105/', //测试服务
  100. target: 'https://server2.wh-nf.cn:8088/prod-api/bdApi/', //测试服务
  101. changeOrigin: true,
  102. logLevel: 'debug',
  103. rewrite: p => p.replace(/^\/bdApi/, ''),
  104. },
  105. },
  106. },
  107. css: {
  108. postcss: {
  109. plugins: [
  110. {
  111. postcssPlugin: 'internal:charset-removal',
  112. AtRule: {
  113. charset: atRule => {
  114. if (atRule.name === 'charset') {
  115. atRule.remove();
  116. }
  117. },
  118. },
  119. },
  120. postCssPxToRem({
  121. // 自适应,px>rem转换
  122. rootValue: 192, // 根据设计图尺寸写,设计图是 1920,就写 192
  123. propList: ['*'], // 需要转换的属性,这里选择全部都进行转换
  124. selectorBlackList: ['-nopx'], // 过滤掉-nopx结尾的class,不进行rem转换
  125. }),
  126. autoprefixer({
  127. // 自动添加前缀
  128. overrideBrowserslist: [
  129. 'Android 4.1',
  130. 'iOS 7.1',
  131. 'Chrome > 31',
  132. 'ff > 31',
  133. 'ie >= 8',
  134. //'last 2 versions', // 所有主流浏览器最近2个版本
  135. ],
  136. grid: true,
  137. }),
  138. ],
  139. },
  140. },
  141. build: {
  142. sourcemap: false,
  143. outDir: 'YanAn',
  144. rollupOptions: {
  145. output: {
  146. chunkFileNames: `static/js/[name].[hash]${Timestamp}.js`,
  147. entryFileNames: `static/js/[name].[hash]${Timestamp}.js`,
  148. assetFileNames: `static/[ext]/[name].[hash]${Timestamp}.[ext]`,
  149. },
  150. brotliSize: true, // 不统计
  151. target: 'esnext',
  152. minify: 'esbuild', // 混淆器,terser构建后文件体积更小
  153. },
  154. },
  155. };
  156. });