index.ts 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import type { Plugin } from 'vite';
  2. import Components from 'unplugin-vue-components/vite';
  3. import { NaiveUiResolver } from 'unplugin-vue-components/resolvers';
  4. import vue from '@vitejs/plugin-vue';
  5. import vueJsx from '@vitejs/plugin-vue-jsx';
  6. import { configHtmlPlugin } from './html';
  7. import { configMockPlugin } from './mock';
  8. import { configCompressPlugin } from './compress';
  9. export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean, prodMock) {
  10. const { VITE_USE_MOCK, VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv;
  11. const vitePlugins: (Plugin | Plugin[])[] = [
  12. // have to
  13. vue(),
  14. // have to
  15. vueJsx(),
  16. // 按需引入NaiveUi且自动创建组件声明
  17. Components({
  18. dts: true,
  19. resolvers: [NaiveUiResolver()],
  20. }),
  21. ];
  22. // vite-plugin-html
  23. vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));
  24. // vite-plugin-mock
  25. VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild, prodMock));
  26. if (isBuild) {
  27. // rollup-plugin-gzip
  28. vitePlugins.push(
  29. configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE)
  30. );
  31. }
  32. return vitePlugins;
  33. }