plugin.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import type { Plugin } from 'vite';
  2. import vue from '@vitejs/plugin-vue';
  3. import vueJsx from '@vitejs/plugin-vue-jsx';
  4. import Components from 'unplugin-vue-components/vite';
  5. import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
  6. import AutoImport from 'unplugin-auto-import/vite';
  7. import legacy from '@vitejs/plugin-legacy';
  8. export function createVitePlugins(isBuild: boolean, mode: string): Plugin[] {
  9. const plugins = [
  10. vue(),
  11. vueJsx(),
  12. Components({
  13. dirs: ['src/components'],
  14. extensions: ['vue'],
  15. deep: true,
  16. resolvers: [
  17. AntDesignVueResolver({
  18. // 用于less变更主题用
  19. importStyle: 'less',
  20. /**
  21. * resolve `ant-design-vue' icons
  22. * requires package `@ant-design/icons-vue`
  23. */
  24. resolveIcons: true
  25. })
  26. ],
  27. dts: 'src/components.d.ts'
  28. }),
  29. AutoImport({
  30. imports: [
  31. 'vue',
  32. 'vue-router',
  33. {
  34. '@vueuse/core': ['useLocalStorage', 'useClipboard']
  35. }
  36. ],
  37. dts: 'src/auto-imports.d.ts'
  38. })
  39. ];
  40. if (isBuild && mode === 'legacy') {
  41. plugins.push(
  42. legacy({
  43. targets: ['ie >= 11'],
  44. additionalLegacyPolyfills: ['regenerator-runtime/runtime']
  45. })
  46. );
  47. }
  48. return plugins;
  49. }