vite.config.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import type { UserConfig, ConfigEnv } from 'vite';
  2. import { loadEnv } from 'vite';
  3. import { resolve } from 'path';
  4. import { wrapperEnv } from './build/utils';
  5. import { createVitePlugins } from './build/vite/plugin';
  6. import { OUTPUT_DIR } from './build/constant';
  7. import { createProxy } from './build/vite/proxy';
  8. import pkg from './package.json';
  9. import { format } from 'date-fns';
  10. const { dependencies, devDependencies, name, version } = pkg;
  11. const __APP_INFO__ = {
  12. pkg: { dependencies, devDependencies, name, version },
  13. lastBuildTime: format(new Date(), 'yyyy-MM-dd HH:mm:ss'),
  14. };
  15. function pathResolve(dir: string) {
  16. return resolve(process.cwd(), '.', dir);
  17. }
  18. export default ({ command, mode }: ConfigEnv): UserConfig => {
  19. const root = process.cwd();
  20. const env = loadEnv(mode, root);
  21. const viteEnv = wrapperEnv(env);
  22. const { VITE_PUBLIC_PATH, VITE_PORT, VITE_GLOB_PROD_MOCK, VITE_PROXY } = viteEnv;
  23. const prodMock = VITE_GLOB_PROD_MOCK;
  24. const isBuild = command === 'build';
  25. return {
  26. base: VITE_PUBLIC_PATH,
  27. esbuild: {},
  28. resolve: {
  29. alias: [
  30. {
  31. find: /\/#\//,
  32. replacement: pathResolve('types') + '/',
  33. },
  34. {
  35. find: '@',
  36. replacement: pathResolve('src') + '/',
  37. },
  38. ],
  39. dedupe: ['vue'],
  40. },
  41. plugins: createVitePlugins(viteEnv, isBuild, prodMock),
  42. define: {
  43. __APP_INFO__: JSON.stringify(__APP_INFO__),
  44. },
  45. server: {
  46. host: true,
  47. port: VITE_PORT,
  48. proxy: createProxy(VITE_PROXY),
  49. },
  50. optimizeDeps: {
  51. include: [],
  52. exclude: ['vue-demi'],
  53. },
  54. build: {
  55. target: 'es2015',
  56. cssTarget: 'chrome80',
  57. outDir: OUTPUT_DIR,
  58. reportCompressedSize: false,
  59. chunkSizeWarningLimit: 2000,
  60. },
  61. };
  62. };