vite.config.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { defineConfig, loadEnv } from 'vite';
  2. import vue from '@vitejs/plugin-vue';
  3. import VitePluginHtmlEnv from 'vite-plugin-html-env';
  4. import { resolve } from 'path';
  5. import WindiCSS from 'vite-plugin-windicss';
  6. // import consola from 'consola';
  7. import mkcert from 'vite-plugin-mkcert';
  8. // import eslintPlugin from 'vite-plugin-eslint'
  9. // import requireTransform from 'vite-plugin-require-transform'
  10. import { chunkSplitPlugin } from 'vite-plugin-chunk-split';
  11. function pathResolve(dir: string) {
  12. return resolve(process.cwd(), '.', dir);
  13. }
  14. // https://vitejs.dev/config/
  15. export default ({ mode }) =>
  16. defineConfig({
  17. base: loadEnv(mode, process.cwd()).VITE_PUBLIC_DIR,
  18. plugins: [
  19. // eslintPlugin({
  20. // include: ['src/**/*.ts', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
  21. // }),
  22. //@ts-ignore
  23. chunkSplitPlugin({
  24. strategy: 'default',
  25. customSplitting: {
  26. 'vue-vendor': ['vue'],
  27. utils: [/src\/utils/],
  28. },
  29. }),
  30. mkcert(),
  31. vue(),
  32. WindiCSS(),
  33. VitePluginHtmlEnv({
  34. prefix: '<{',
  35. suffix: '}>',
  36. envPrefixes: ['VITE_', 'VUE_'],
  37. }),
  38. ],
  39. resolve: {
  40. alias: [
  41. {
  42. find: /\/@\//,
  43. replacement: pathResolve('src') + '/',
  44. },
  45. {
  46. find: /\/#\//,
  47. replacement: pathResolve('types') + '/',
  48. },
  49. ],
  50. },
  51. server: {
  52. https: Number(loadEnv(mode, process.cwd()).VITE_USE_HTTPS) == 1,
  53. host: true,
  54. port: 6100,
  55. headers: {
  56. 'Cache-Control': 'no-store',
  57. },
  58. proxy: {
  59. '/service': {
  60. target: loadEnv(mode, process.cwd()).VITE_APP_APIS_URL,
  61. changeOrigin: true,
  62. },
  63. '/takelook': {
  64. target: loadEnv(mode, process.cwd()).VITE_APP_APIS_URL,
  65. changeOrigin: true,
  66. },
  67. },
  68. },
  69. build: {
  70. // minify: false,
  71. minify: 'terser',
  72. // target: 'es2015',
  73. // cssTarget: 'chrome86',
  74. outDir: 'dist',
  75. terserOptions: {
  76. compress: {
  77. keep_infinity: true,
  78. // Used to delete console in production environment
  79. drop_console: false,
  80. },
  81. },
  82. // Turning off brotliSize display can slightly reduce packaging time
  83. // brotliSize: false,
  84. chunkSizeWarningLimit: 2000,
  85. },
  86. });