vite.config.ts 1.5 KB

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