vite.config.ts 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import eslint from 'vite-plugin-eslint'
  4. import viteCompression from 'vite-plugin-compression'
  5. import { resolve } from 'path'
  6. import { createSvgIconsPlugin } from 'vite-plugin-svg-icons'
  7. export default () => defineConfig({
  8. base: './',
  9. resolve: {
  10. alias: {
  11. '@': resolve(__dirname, './src')
  12. }
  13. },
  14. plugins: [
  15. vue(),
  16. viteCompression(),
  17. eslint({ fix: true, include: ['**/*.ts', '**/*.vue'] }),
  18. createSvgIconsPlugin({
  19. iconDirs: [resolve(__dirname, './src/assets/icons')],
  20. // Specify symbolId format
  21. symbolId: 'icon-[dir]-[name]'
  22. }),
  23. ],
  24. server: {
  25. host: '0.0.0.0',
  26. port: 6547,
  27. open: true,
  28. strictPort: false,
  29. https: false,
  30. },
  31. esbuild: {
  32. drop: ['console', 'debugger'] // build 移除打印
  33. },
  34. build: {
  35. rollupOptions: {
  36. input: {
  37. index: resolve(__dirname, 'index.html')
  38. },
  39. output: { // 静态资源分类打包
  40. chunkFileNames: 'js/[hash].js',
  41. entryFileNames: 'js/[hash].js',
  42. assetFileNames: 'assets/[ext]/[hash].[ext]',
  43. // 拆分node_modules包
  44. manualChunks: (id) => {
  45. if (id.includes('node_modules')) {
  46. return id.toString().split('node_modules/')[1].split('/')[0].toString()
  47. }
  48. return ''
  49. }
  50. }
  51. }
  52. },
  53. define: {
  54. __VUE_OPTIONS_API__: false
  55. }
  56. })