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