vite.config.ts 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  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. plugins: [
  18. // eslintPlugin({
  19. // include: ['src/**/*.ts', 'src/**/*.vue', 'src/*.js', 'src/*.vue']
  20. // }),
  21. //@ts-ignore
  22. chunkSplitPlugin({
  23. strategy: 'default',
  24. customSplitting: {
  25. 'vue-vendor': ['vue'],
  26. 'utils': [/src\/utils/]
  27. },
  28. }),
  29. mkcert(),
  30. vue(),
  31. WindiCSS(),
  32. VitePluginHtmlEnv({
  33. prefix: '<{',
  34. suffix: '}>',
  35. envPrefixes: ['VITE_', 'VUE_'],
  36. }),
  37. ],
  38. resolve: {
  39. alias: [
  40. {
  41. find: /\/@\//,
  42. replacement: pathResolve('src') + '/',
  43. },
  44. ],
  45. },
  46. server: {
  47. https: Number(loadEnv(mode, process.cwd()).VITE_USE_HTTPS) == 1,
  48. host: true,
  49. headers: {
  50. 'Cache-Control': 'no-store',
  51. },
  52. proxy: {
  53. '/service': {
  54. target: loadEnv(mode, process.cwd()).VITE_APP_APIS_URL,
  55. changeOrigin: true,
  56. },
  57. '/takelook': {
  58. target: 'https://v4-test.4dkankan.com',
  59. changeOrigin: true,
  60. },
  61. },
  62. },
  63. build: {
  64. // minify: false,
  65. minify: 'terser',
  66. // target: 'es2015',
  67. // cssTarget: 'chrome86',
  68. outDir: 'dist',
  69. terserOptions: {
  70. compress: {
  71. keep_infinity: true,
  72. // Used to delete console in production environment
  73. drop_console: false,
  74. },
  75. },
  76. // Turning off brotliSize display can slightly reduce packaging time
  77. // brotliSize: false,
  78. chunkSizeWarningLimit: 2000,
  79. },
  80. });