index.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import type { Plugin } from 'vite';
  2. import Components from 'unplugin-vue-components/vite';
  3. import { NaiveUiResolver } from 'unplugin-vue-components/resolvers';
  4. import topLevelAwait from 'vite-plugin-top-level-await';
  5. import vue from '@vitejs/plugin-vue';
  6. import vueJsx from '@vitejs/plugin-vue-jsx';
  7. import { configHtmlPlugin } from './html';
  8. import { configMockPlugin } from './mock';
  9. import { configCompressPlugin } from './compress';
  10. export function createVitePlugins(viteEnv: ViteEnv, isBuild: boolean, prodMock) {
  11. const { VITE_USE_MOCK, VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE } = viteEnv;
  12. const vitePlugins: (Plugin | Plugin[])[] = [
  13. // have to
  14. vue(),
  15. // have to
  16. vueJsx(),
  17. // 按需引入NaiveUi且自动创建组件声明
  18. Components({
  19. dts: true,
  20. resolvers: [NaiveUiResolver()],
  21. }),
  22. // 支持顶级wait
  23. topLevelAwait({
  24. // The export name of top-level await promise for each chunk module
  25. promiseExportName: '__tla',
  26. // The function to generate import names of top-level await promise in each chunk module
  27. promiseImportName: (i) => `__tla_${i}`,
  28. }),
  29. ];
  30. // vite-plugin-html
  31. vitePlugins.push(configHtmlPlugin(viteEnv, isBuild));
  32. // vite-plugin-mock
  33. VITE_USE_MOCK && vitePlugins.push(configMockPlugin(isBuild, prodMock));
  34. if (isBuild) {
  35. // rollup-plugin-gzip
  36. vitePlugins.push(
  37. configCompressPlugin(VITE_BUILD_COMPRESS, VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE)
  38. );
  39. }
  40. return vitePlugins;
  41. }