chore: 优化构建分包策略

This commit is contained in:
digua
2026-03-17 22:31:35 +08:00
parent c74430928f
commit f646415c37
6 changed files with 37 additions and 52 deletions
+23
View File
@@ -56,6 +56,29 @@ export default defineConfig(() => {
input: {
index: resolve(__dirname, 'src/index.html'),
},
output: {
manualChunks(id) {
if (id.includes('node_modules/echarts-wordcloud')) {
return 'vendor-echarts-wordcloud'
}
if (id.includes('node_modules/zrender')) {
return 'vendor-zrender'
}
if (id.includes('node_modules/echarts')) {
return 'vendor-echarts'
}
if (id.includes('node_modules/@nuxt/ui')) {
return 'vendor-nuxt-ui'
}
if (id.includes('node_modules/reka-ui')) {
return 'vendor-reka-ui'
}
if (id.includes('node_modules/@zumer/snapdom')) {
return 'vendor-snapdom'
}
return undefined
},
},
},
},
server: {
+2 -7
View File
@@ -37,7 +37,6 @@
"@mariozechner/pi-ai": "0.54.2",
"@node-rs/jieba": "^2.0.1",
"@tanstack/vue-virtual": "^3.13.18",
"@types/markdown-it": "^14.1.2",
"@zumer/snapdom": "^2.0.1",
"better-sqlite3": "^12.4.6",
"echarts": "^6.0.0",
@@ -48,9 +47,7 @@
"markdown-it": "^14.1.0",
"node-machine-id": "^1.1.12",
"stream-json": "^1.9.1",
"vue-echarts": "^8.0.1",
"vue-i18n": "^11.2.8",
"zod": "^4.3.5"
"vue-i18n": "^11.2.8"
},
"devDependencies": {
"@electron-toolkit/tsconfig": "^1.0.1",
@@ -58,20 +55,18 @@
"@nuxt/ui": "^4.2.1",
"@tailwindcss/vite": "^4.0.0",
"@types/better-sqlite3": "^7.6.13",
"@types/markdown-it": "^14.1.2",
"@types/stream-json": "^1.7.8",
"@vitejs/plugin-vue": "^5.2.3",
"@vue/eslint-config-prettier": "^10.2.0",
"@vue/eslint-config-typescript": "^14.6.0",
"@vueuse/core": "^13.9.0",
"axios": "^1.13.2",
"cross-env": "^7.0.3",
"dayjs": "^1.11.19",
"electron": "^35.0.0",
"electron-builder": "^26.0.12",
"electron-vite": "^3.0.0",
"eslint": "^9.39.1",
"eslint-plugin-vue": "^9.33.0",
"mitt": "^3.0.1",
"pinia": "^3.0.4",
"pinia-plugin-persistedstate": "^4.7.1",
"prettier": "^3.5.3",
+6 -39
View File
@@ -29,9 +29,6 @@ importers:
'@tanstack/vue-virtual':
specifier: ^3.13.18
version: 3.13.18(vue@3.5.27(typescript@5.9.3))
'@types/markdown-it':
specifier: ^14.1.2
version: 14.1.2
'@zumer/snapdom':
specifier: ^2.0.1
version: 2.0.2
@@ -62,15 +59,9 @@ importers:
stream-json:
specifier: ^1.9.1
version: 1.9.1
vue-echarts:
specifier: ^8.0.1
version: 8.0.1(echarts@6.0.0)(vue@3.5.27(typescript@5.9.3))
vue-i18n:
specifier: ^11.2.8
version: 11.2.8(vue@3.5.27(typescript@5.9.3))
zod:
specifier: ^4.3.5
version: 4.3.6
devDependencies:
'@electron-toolkit/tsconfig':
specifier: ^1.0.1
@@ -87,6 +78,9 @@ importers:
'@types/better-sqlite3':
specifier: ^7.6.13
version: 7.6.13
'@types/markdown-it':
specifier: ^14.1.2
version: 14.1.2
'@types/stream-json':
specifier: ^1.7.8
version: 1.7.8
@@ -102,12 +96,6 @@ importers:
'@vueuse/core':
specifier: ^13.9.0
version: 13.9.0(vue@3.5.27(typescript@5.9.3))
axios:
specifier: ^1.13.2
version: 1.13.5
cross-env:
specifier: ^7.0.3
version: 7.0.3
dayjs:
specifier: ^1.11.19
version: 1.11.19
@@ -126,9 +114,6 @@ importers:
eslint-plugin-vue:
specifier: ^9.33.0
version: 9.33.0(eslint@9.39.2(jiti@2.6.1))
mitt:
specifier: ^3.0.1
version: 3.0.1
pinia:
specifier: ^3.0.4
version: 3.0.4(typescript@5.9.3)(vue@3.5.27(typescript@5.9.3))
@@ -2329,11 +2314,6 @@ packages:
cross-dirname@0.1.0:
resolution: {integrity: sha512-+R08/oI0nl3vfPcqftZRpytksBXDzOUveBq/NBVx0sUp1axwzPQrKinNx5yd5sxPu8j1wIy8AfnVQ+5eFdha6Q==}
cross-env@7.0.3:
resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
hasBin: true
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
engines: {node: '>= 8'}
@@ -4644,12 +4624,6 @@ packages:
'@vue/composition-api':
optional: true
vue-echarts@8.0.1:
resolution: {integrity: sha512-23rJTFLu1OUEGRWjJGmdGt8fP+8+ja1gVgzMYPIPaHWpXegcO1viIAaeu2H4QHESlVeHzUAHIxKXGrwjsyXAaA==}
peerDependencies:
echarts: ^6.0.0
vue: ^3.3.0
vue-eslint-parser@10.2.0:
resolution: {integrity: sha512-CydUvFOQKD928UzZhTp4pr2vWz1L+H99t7Pkln2QSPdvmURT0MoC4wUccfCnuEaihNsu9aYYyk+bep8rlfkUXw==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -7426,6 +7400,7 @@ snapshots:
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
optional: true
balanced-match@1.0.2: {}
@@ -7679,10 +7654,6 @@ snapshots:
cross-dirname@0.1.0:
optional: true
cross-env@7.0.3:
dependencies:
cross-spawn: 7.0.6
cross-spawn@7.0.6:
dependencies:
path-key: 3.1.1
@@ -8249,7 +8220,8 @@ snapshots:
flatted@3.3.3: {}
follow-redirects@1.15.11: {}
follow-redirects@1.15.11:
optional: true
fontaine@0.7.0:
dependencies:
@@ -10114,11 +10086,6 @@ snapshots:
dependencies:
vue: 3.5.27(typescript@5.9.3)
vue-echarts@8.0.1(echarts@6.0.0)(vue@3.5.27(typescript@5.9.3)):
dependencies:
echarts: 6.0.0
vue: 3.5.27(typescript@5.9.3)
vue-eslint-parser@10.2.0(eslint@9.39.2(jiti@2.6.1)):
dependencies:
debug: 4.4.3
@@ -1,7 +1,7 @@
<script setup lang="ts">
import { ref, watch, computed, onMounted } from 'vue'
import { ref, watch, computed, onMounted, defineAsyncComponent } from 'vue'
import { useI18n } from 'vue-i18n'
import { EChartWordcloud } from '@/components/charts'
const EChartWordcloud = defineAsyncComponent(() => import('@/components/charts/EChartWordcloud.vue'))
import type { EChartWordcloudData } from '@/components/charts'
import { LoadingState, EmptyState, UITabs } from '@/components/UI'
import UserSelect from '@/components/common/UserSelect.vue'
+2 -2
View File
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref, onMounted, watch, computed } from 'vue'
import { ref, onMounted, watch, computed, defineAsyncComponent } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { storeToRefs } from 'pinia'
import { useI18n } from 'vue-i18n'
@@ -16,7 +16,7 @@ import MemberTab from './components/MemberTab.vue'
import PageHeader from '@/components/layout/PageHeader.vue'
import SessionIndexModal from '@/components/analysis/SessionIndexModal.vue'
import IncrementalImportModal from '@/components/analysis/IncrementalImportModal.vue'
import MessageExportModal from '@/components/MessageExport/MessageExportModal.vue'
const MessageExportModal = defineAsyncComponent(() => import('@/components/MessageExport/MessageExportModal.vue'))
import LoadingState from '@/components/UI/LoadingState.vue'
import { useSessionStore } from '@/stores/session'
import { useLayoutStore } from '@/stores/layout'
+2 -2
View File
@@ -1,5 +1,5 @@
<script setup lang="ts">
import { ref, onMounted, watch, computed } from 'vue'
import { ref, onMounted, watch, computed, defineAsyncComponent } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import { storeToRefs } from 'pinia'
import { useI18n } from 'vue-i18n'
@@ -16,7 +16,7 @@ import MemberTab from './components/MemberTab.vue'
import PageHeader from '@/components/layout/PageHeader.vue'
import SessionIndexModal from '@/components/analysis/SessionIndexModal.vue'
import IncrementalImportModal from '@/components/analysis/IncrementalImportModal.vue'
import MessageExportModal from '@/components/MessageExport/MessageExportModal.vue'
const MessageExportModal = defineAsyncComponent(() => import('@/components/MessageExport/MessageExportModal.vue'))
import LoadingState from '@/components/UI/LoadingState.vue'
import { useSessionStore } from '@/stores/session'
import { useLayoutStore } from '@/stores/layout'