vite.config.ts 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import path from 'path';
  2. import { UserConfigExport, ConfigEnv, loadEnv } from 'vite';
  3. import vueJsx from '@vitejs/plugin-vue-jsx';
  4. import vue from '@vitejs/plugin-vue';
  5. import svgLoader from 'vite-svg-loader';
  6. import imageLoader from '@rollup/plugin-image';
  7. import Components from 'unplugin-vue-components/vite';
  8. import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
  9. import ElementPlus from 'unplugin-element-plus/vite';
  10. import { createHtmlPlugin } from 'vite-plugin-html';
  11. const getEnvFn = (mode, target) => {
  12. return loadEnv(mode, process.cwd())[target];
  13. };
  14. /**
  15. * @type {import('vite').UserConfig}
  16. * @link {https://vitejs.cn/config/}
  17. */
  18. export default ({ command, mode }: ConfigEnv): UserConfigExport => {
  19. console.log(command);
  20. return {
  21. root: process.cwd(),
  22. base: './',
  23. server: {
  24. host: '0.0.0.0',
  25. open: true,
  26. port: 8001,
  27. // strictPort: true,
  28. https: false,
  29. force: true,
  30. proxy: {
  31. '/api': {
  32. // target: 'http://61.147.254.211:30876/YJZH-SQ/',
  33. target: 'http://10.11.208.17:30876/YJZH-SQ/',
  34. // target: 'https://tocc.jtj.suqian.gov.cn:9999/server/YJZH-SQ/',
  35. // target: 'http://sqpcbg.xt.wenhq.top:8083/',
  36. changeOrigin: true,
  37. // rewrite: (path) => path.replace(/^\/api/, ''),
  38. },
  39. },
  40. },
  41. resolve: {
  42. alias: {
  43. '@': path.resolve(__dirname, './src'),
  44. '@assets': path.resolve(__dirname, './src/assets'),
  45. },
  46. },
  47. css: {
  48. modules: {
  49. localsConvention: 'camelCase', // 默认只支持驼峰,修改为同事支持横线和驼峰
  50. },
  51. preprocessorOptions: {
  52. scss: {
  53. /**
  54. * TODO:// 目前按需加载时修改主题色会报错
  55. * 官方修复后在进行按需加载
  56. * @link {https://github.com/element-plus/element-plus/issues/2724}
  57. *
  58. * */
  59. // additionalData: `@use "@/styles/element/index.scss" as *;`,
  60. },
  61. // scss: { additionalData: `@import "@/styles/vars.scss";` },
  62. // less: {
  63. // javascriptEnabled: true,
  64. // additionalData: `@import "@/styles/default.less";`,
  65. // },
  66. },
  67. },
  68. plugins: [
  69. vue(),
  70. vueJsx({
  71. // options are passed on to @vue/babel-plugin-jsx
  72. }),
  73. imageLoader(),
  74. createHtmlPlugin({
  75. inject: {
  76. data: {
  77. mapurl: getEnvFn(mode, 'VITE_MAP_SERVER'),
  78. mapkey: getEnvFn(mode, 'VITE_MAP_KEY'),
  79. mapsolution: getEnvFn(mode, 'VITE_MAP_SOLUTION'),
  80. spuser: getEnvFn(mode, 'VITE_SP_USER'),
  81. },
  82. },
  83. }),
  84. // svgLoader(),
  85. // ElementPlus({ useSource: true }),
  86. ],
  87. };
  88. };