vite.config.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { defineConfig } from 'vite'
  2. import vue from '@vitejs/plugin-vue'
  3. import viteSvgIcons from 'vite-plugin-svg-icons'
  4. import { MonacoEditorNls } from './src/plugins/monaco-editor-nls.js'
  5. import { MonacoExcludeLanguages } from './src/plugins/monaco-exclude-languages.js'
  6. import path from 'path'
  7. const buildIndex = () => {
  8. return {
  9. name: 'html-transform',
  10. transformIndexHtml(html) {
  11. return html.replace(/@VERSION@/g, require('./package.json').version)
  12. }
  13. }
  14. }
  15. // https://vitejs.dev/config/
  16. export default defineConfig({
  17. base: './',
  18. optimizeDeps: {
  19. esbuildOptions: {
  20. plugins: [
  21. MonacoEditorNls(true),
  22. MonacoExcludeLanguages(true)
  23. ]
  24. }
  25. },
  26. server: {
  27. host: true
  28. },
  29. build: {
  30. cssCodeSplit: false,
  31. rollupOptions: {
  32. // 屏蔽不需要的语言
  33. output: {
  34. minifyInternalExports: true,
  35. manualChunks: (id, { getModuleInfo }) => {
  36. if (id.includes('node_modules')) {
  37. if(id.includes('axios')){
  38. return 'axios'
  39. }
  40. if(id.includes('vue')){
  41. return 'vue'
  42. }
  43. return 'vendor';
  44. } else if(id.includes('/src/')){
  45. return 'app'
  46. }
  47. }
  48. },
  49. }
  50. },
  51. plugins: [
  52. vue(),
  53. viteSvgIcons({
  54. iconDirs: [path.resolve(process.cwd(), 'src/icons')],
  55. symbolId: 'magic-icon-[name]'
  56. }),
  57. buildIndex(),
  58. MonacoEditorNls(),
  59. MonacoExcludeLanguages()
  60. ]
  61. })