vite.config.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import vue from '@vitejs/plugin-vue';
  2. import { resolve } from 'path';
  3. import { defineConfig, ConfigEnv } from 'vite';
  4. import vueSetupExtend from 'vite-plugin-vue-setup-extend-plus'; // setup语法糖设置name
  5. import viteCompression from 'vite-plugin-compression'; //开启gzip打包压缩
  6. import vueJsx from '@vitejs/plugin-vue-jsx'; // jsx
  7. // @ts-ignore
  8. export default defineConfig((mode: ConfigEnv) => {
  9. return {
  10. plugins: [
  11. vue(),
  12. vueSetupExtend(),
  13. viteCompression(),
  14. vueJsx({
  15. // options are passed on to @vue/babel-plugin-jsx
  16. }),
  17. ],
  18. root: process.cwd(),
  19. resolve: { alias: { '@': resolve(__dirname, './src') } },
  20. base: mode.command === 'serve' ? './' : '/',
  21. hmr: true,
  22. server: {
  23. host: '0.0.0.0',
  24. port: 8888,
  25. open: true, // 是否打开浏览器
  26. },
  27. build: {
  28. outDir: 'dist',
  29. sourcemap: false,
  30. chunkSizeWarningLimit: 1500,
  31. rollupOptions: {
  32. output: {
  33. entryFileNames: `assets/[name].[hash].js`,
  34. chunkFileNames: `assets/[name].[hash].js`,
  35. assetFileNames: `assets/[name].[hash].[ext]`,
  36. compact: true,
  37. manualChunks: {
  38. vue: ['vue', 'vue-router', 'pinia'],
  39. },
  40. },
  41. },
  42. minify: 'terser',
  43. terserOptions: {
  44. //生产环境时移除console和debugger
  45. compress: {
  46. drop_console: false,
  47. drop_debugger: true,
  48. },
  49. },
  50. },
  51. css: { preprocessorOptions: { css: { charset: false } } },
  52. };
  53. });