vite.config.ts 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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: 'https://tocc.jtj.suqian.gov.cn:9999/server/YJZH-SQ/',
  33. // target: 'http://sqpcbg.xt.wenhq.top:8083/',
  34. changeOrigin: true,
  35. // rewrite: (path) => path.replace(/^\/api/, ''),
  36. },
  37. },
  38. },
  39. resolve: {
  40. alias: {
  41. '@': path.resolve(__dirname, './src'),
  42. '@assets': path.resolve(__dirname, './src/assets'),
  43. },
  44. },
  45. css: {
  46. modules: {
  47. localsConvention: 'camelCase', // 默认只支持驼峰,修改为同事支持横线和驼峰
  48. },
  49. preprocessorOptions: {
  50. scss: {
  51. /**
  52. * TODO:// 目前按需加载时修改主题色会报错
  53. * 官方修复后在进行按需加载
  54. * @link {https://github.com/element-plus/element-plus/issues/2724}
  55. *
  56. * */
  57. // additionalData: `@use "@/styles/element/index.scss" as *;`,
  58. },
  59. // scss: { additionalData: `@import "@/styles/vars.scss";` },
  60. // less: {
  61. // javascriptEnabled: true,
  62. // additionalData: `@import "@/styles/default.less";`,
  63. // },
  64. },
  65. },
  66. plugins: [
  67. vue(),
  68. vueJsx({
  69. // options are passed on to @vue/babel-plugin-jsx
  70. }),
  71. imageLoader(),
  72. createHtmlPlugin({
  73. inject: {
  74. data: {
  75. mapurl: getEnvFn(mode, 'VITE_MAP_SERVER'),
  76. mapkey: getEnvFn(mode, 'VITE_MAP_KEY'),
  77. mapsolution: getEnvFn(mode, 'VITE_MAP_SOLUTION'),
  78. spuser: getEnvFn(mode, 'VITE_SP_USER'),
  79. },
  80. },
  81. }),
  82. // svgLoader(),
  83. // ElementPlus({ useSource: true }),
  84. ],
  85. };
  86. };