import { fileURLToPath, URL } from 'node:url' import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' // import vueJsx from '@vitejs/plugin-vue-jsx' // import vueDevTools from 'vite-plugin-vue-devtools' export default defineConfig({ plugins: [ vue(), // vueJsx(), // vueDevTools(), ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } }, server: { host: '0.0.0.0', port: 7791, open: false, proxy: { '^/api/.*': { target: "http://127.0.0.1:7779", changeOrigin: false, }, }, }, optimizeDeps: { include: [ 'lodash', 'axios', 'three', 'dat.gui', 'element-plus', 'ag-grid-community', 'ag-grid-enterprise', 'ag-grid-vue3', 'codemirror' ] }, build:{ target: 'modules', outDir: "./dist", minify: true, sourcemap: false, rollupOptions: { output: { chunkFileNames: (chunkInfo) => { return 'js/[name]-[hash].js'; }, entryFileNames: 'js/yvan-lcc.mjs', assetFileNames: 'js/yvan-lcc[extname]', name: "yvan-lcc", exports: 'named', globals: { vue: "Vue", }, manualChunks: function (id) { if (id.includes("/yvan-lcc/src")) { return; } if (id.includes('diagram-js')) { return 'diagram-js'; } // 无法切包 // if (id.includes('/monaco-editor/')) { // return 'monaco-editor'; // } // 无法切包 // if (id.includes('/codemirror/')) { // return 'codemirror'; // } // if (id.includes('/@codemirror/')) { // return 'codemirror2'; // } if (id.includes('/lodash/') || id.includes('/lodash-es/')) { return 'lodash'; } if (id.includes('/vant/')) { return 'vant'; } if (id.includes('/zrender/')) { return 'zrender'; } if (id.includes('/@vicons/ionicons5/')) { return 'ionicons5'; } if (id.includes('/@vicons/antd/')) { return 'antd-icons'; } if (id.includes('/@vicons/fa/')) { return 'fa-icons'; } if (id.includes('/dayjs/')) { return 'dayjs'; } if (id.includes('/@vueuse/')) { return 'vueuse'; } if (id.includes('/axios/')) { return 'axios'; } if (id.includes('/crypto-js/')) { return 'crypto-js'; } if (id.includes('/@interactjs/')) { return 'interactjs'; } if (id.includes('bpmn-js')) { return 'bpmn-js'; } if (id.includes('/highlight.js/')) { return 'highlight'; } if (id.includes('/echarts/')) { return 'echarts'; } if (id.includes('/prismjs/')) { return 'prismjs'; } if (id.includes('/jquery/')) { return 'jquery'; } if (id.includes('/xlsx/')) { return 'xlsx'; } if (id.includes('/vue3-markdown-it/')) { return 'vue3-markdown-it'; } if (id.includes('/element-plus/') || id.includes('/@element-plus/')) { return 'element-plus'; } console.log("id", id) }, }, external: [ // 'vue', // 'vue-router', // 'lodash', // 'element-plus', // "codemirror", // 'ag-grid-community', // 'ag-grid-enterprise', // 'ag-grid-vue3', // 'localforage', // 'json5', // "vant", // "axios", // "echarts", // "split.js", // "pinia", // "vue3-menus", // "resize-observer-polyfill", // "@element-plus/icons-vue", // "@vicons/fa", // "@vicons/utils", // "axios" ], }, } })