/* eslint-disable import/no-extraneous-dependencies */ import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import eslint from 'vite-plugin-eslint' import viteCompression from 'vite-plugin-compression' import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' import { resolve } from 'path' import fs from 'fs' import sizeOf from 'image-size' // 获取CAD图片大小 const getImgSize = () => { try { const divs = resolve('./public/CAD_1') const fileName = fs.readdirSync(divs) as any if (!fileName || !fileName.length) return {} const max = Math.max(...fileName) const filePath = `${divs}/${max}` const filesPath = fs.readdirSync(filePath) const maxName = [] for (let k = 0; k < filesPath.length; k++) { const el = filesPath[k] const id = el.indexOf('_') const num = el.substring(0, id) maxName.push({ num, name: el }) } maxName.sort((a, b) => +b.num - +a.num) const txt = `${divs}/${max}/${maxName[0].name}` const fileSize = sizeOf(txt) const obj = { W: fileSize.width * (+maxName[0].num + 1), H: fileSize.height * max, S: fileSize.width, M: max } console.log('断面图基础配置', obj); return obj } catch (error) { console.log('错误?',error); return { W: 0, H: 0, S: 0, M: 0 } } } // https://vitejs.dev/config/ export default ({ mode }) => { const env = loadEnv(mode, process.cwd()) return defineConfig({ base: './', css: { preprocessorOptions: { scss: { api: 'modern-compiler' } } }, resolve: { alias: { /* 路径别名 若为文件系统路径必须是绝对路径的形式,否则将以别名原样呈现,不会解析为文件系统路径路径 */ '@': resolve(__dirname, './src') } }, plugins: [ vue(), viteCompression(), eslint({ fix: true, include: ['**/*.ts', '**/*.vue'], cache: true }), createSvgIconsPlugin({ iconDirs: [resolve(__dirname, './src/assets/icons')], symbolId: 'icon-[dir]-[name]' }) ], server: { host: '0.0.0.0', port: 6888, open: true, strictPort: false, // proxy: { // '/api': { // target: env.VITE_PROXY_URL, // changeOrigin: true, // rewrite: (path) => path.replace(/^\/api/, ''), // secure: false, // headers: { // Referer: 'https://example.com' // } // } // } }, esbuild: { drop: ['debugger'] // build 移除打印 }, build: { rollupOptions: { input: { index: resolve(__dirname, 'index.html') }, output: { // 静态资源分类打包 chunkFileNames: 'js/[hash].js', entryFileNames: 'js/[hash].js', assetFileNames: 'assets/[ext]/[hash].[ext]', // 拆分node_modules包 manualChunks: (id: any) => { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0].toString() } return '' } } } }, define: { 'process.env': { imgSize: getImgSize() }, __VUE_OPTIONS_API__: false } }) }