import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import { visualizer } from 'rollup-plugin-visualizer' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import stylelintPlugin from 'vite-plugin-stylelint' import viteImagemin from 'vite-plugin-imagemin' import cesium from 'vite-plugin-cesium' // https://vitejs.dev/config/ export default defineConfig({ base: './', build: { // outDir: './docs', rollupOptions: { output: { chunkFileNames: 'js/[name]-[hash].js', // 引入文件名的名称 entryFileNames: 'js/[name]-[hash].js', // 包的入口文件名称 manualChunks(id) { if (id.includes('node_modules')) { return id .toString() .split('node_modules/')[1] .split('/')[0] .toString() } }, }, }, }, plugins: [ vue(), cesium(), vueJsx(), stylelintPlugin({ fix: true }), visualizer({ open: true }), viteImagemin({ gifsicle: { optimizationLevel: 7, interlaced: false, }, optipng: { optimizationLevel: 7, }, mozjpeg: { quality: 20, }, pngquant: { quality: [0.8, 0.9], speed: 4, }, svgo: { plugins: [ { name: 'removeViewBox', }, { name: 'removeEmptyAttrs', active: false, }, ], }, }), ], css: { preprocessorOptions: { scss: { api: 'modern-compiler', }, less: { modifyVars: { 'border-radius-small': '0px', 'border-radius-medium': '0px', 'border-radius-large': '0px', }, }, }, }, resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)), }, }, server: { host: '0.0.0.0', port: 1124, open: true, }, })