You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.0 KiB
154 lines
4.0 KiB
import { fileURLToPath, URL } from 'node:url'
|
|
|
|
import { defineConfig } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import typescript from 'rollup-plugin-typescript2'
|
|
// 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: {
|
|
}
|
|
},
|
|
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"
|
|
],
|
|
},
|
|
}
|
|
})
|
|
|