vite.config.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import path from 'path'
  4. import { viteMockServe } from 'vite-plugin-mock'
  5. import viteSvgIcons from 'vite-plugin-svg-icons'
  6. import viteESLint from '@ehutch79/vite-eslint'
  7. // https://vitejs.dev/config/
  8. export default env => {
  9. // console.log(111, env);
  10. return defineConfig({
  11. // base: '/vue3-element-admin-site/',
  12. plugins: [
  13. vue(),
  14. viteMockServe({
  15. ignore: /^_/, // 忽略以下划线`_`开头的文件
  16. mockPath: 'mock', // 指定mock目录中的文件全部是mock接口
  17. supportTs: false, // mockPath目录中的文件是否支持ts文件,现在我们不使用ts,所以设为false
  18. localEnabled: env.mode === 'mock', // 开发环境是否开启mock功能(可以在package.json的启动命令中指定mode为mock)
  19. prodEnabled: env.mode === 'mock', // 生产环境是否开启mock功能
  20. injectCode: `
  21. import { setupProdMockServer } from '../mock/_createProductionServer';
  22. setupProdMockServer();
  23. `,
  24. }),
  25. viteSvgIcons({
  26. // 指定需要缓存的图标文件夹
  27. iconDirs: [path.resolve(__dirname, 'src/assets/svg')],
  28. // 指定symbolId格式
  29. symbolId: 'icon-[dir]-[name]',
  30. }),
  31. viteESLint({
  32. include: ['src/**/*.vue', 'src/**/*.js'],
  33. }),
  34. ],
  35. css: {
  36. preprocessorOptions: {
  37. scss: {
  38. // 全局变量
  39. // additionalData: '@import "./src/assets/style/global-variables.scss";',
  40. // element-plus升级到v2需要改成以下写法
  41. additionalData: `@use "./src/assets/style/global-variables.scss" as *;`,
  42. },
  43. },
  44. },
  45. resolve: {
  46. alias: {
  47. '@': path.resolve(__dirname, 'src'),
  48. },
  49. },
  50. server: {
  51. port: 3001,
  52. open: true,
  53. proxy: {
  54. '/api': {
  55. target: 'http://192.168.18.22:8501', // 后端接口的域名
  56. changeOrigin: true,
  57. rewrite: path => path.replace(/^\/api/, ''),
  58. },
  59. },
  60. },
  61. esbuild: false,
  62. build: {
  63. terserOptions: {
  64. compress: {
  65. keep_infinity: true,
  66. // 删除console
  67. drop_console: true,
  68. },
  69. },
  70. // 禁用该功能可能会提高大型项目的构建性能
  71. brotliSize: false,
  72. rollupOptions: {
  73. output: {
  74. // 拆分单独模块
  75. manualChunks: {
  76. 'element-plus': ['element-plus'],
  77. mockjs: ['mockjs'],
  78. },
  79. },
  80. },
  81. },
  82. })
  83. }