plugins.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /**
  2. * Vite 插件配置
  3. */
  4. import vue from '@vitejs/plugin-vue';
  5. import vueJsx from '@vitejs/plugin-vue-jsx';
  6. import AutoImport from 'unplugin-auto-import/vite';
  7. import Components from 'unplugin-vue-components/vite';
  8. import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
  9. import { visualizer } from 'rollup-plugin-visualizer';
  10. /**
  11. * 获取基础插件配置
  12. */
  13. export function getPlugins(isProd) {
  14. const plugins = [
  15. vue(),
  16. vueJsx(),
  17. // 自动导入 Vue API 和 Vue Router API
  18. AutoImport({
  19. imports: [
  20. 'vue',
  21. 'vue-router',
  22. 'pinia',
  23. '@vueuse/core',
  24. {
  25. 'ant-design-vue/es': [
  26. 'message',
  27. 'notification',
  28. 'Modal',
  29. ],
  30. 'dayjs': [
  31. ['default', 'dayjs']
  32. ],
  33. 'axios': [
  34. ['default', 'axios']
  35. ],
  36. }
  37. ],
  38. dts: true, // 生成类型定义文件
  39. eslintrc: {
  40. enabled: true, // 生成 .eslintrc-auto-import.json
  41. },
  42. }),
  43. // 自动导入组件
  44. Components({
  45. resolvers: [
  46. AntDesignVueResolver({
  47. importStyle: false, // css in js
  48. }),
  49. ],
  50. dts: true, // 生成类型定义文件
  51. directoryAsNamespace: false,
  52. globalNamespaces: [],
  53. directives: true,
  54. include: [/\.vue$/, /\.vue\?vue/, /\.md$/],
  55. exclude: [/[\\/]node_modules[\\/]/, /[\\/]\.git[\\/]/, /[\\/]\.nuxt[\\/]/],
  56. }),
  57. ];
  58. // 生产环境添加额外的插件
  59. if (isProd) {
  60. // 添加打包分析插件
  61. plugins.push(
  62. visualizer({
  63. filename: 'dist/stats.html',
  64. open: true,
  65. gzipSize: true,
  66. brotliSize: true,
  67. })
  68. );
  69. }
  70. return plugins;
  71. }