caoziwu 2 hete
szülő
commit
5c394a07b6

+ 18 - 2
electron-builder.cjs

@@ -44,7 +44,22 @@ module.exports = {
     '!vite.config.web.{js,ts,mjs,cjs}',
     '!{.eslintcache,eslint.config.mjs,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}',
     '!{.env,.env.*,.npmrc,pnpm-lock.yaml}',
-    '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}'
+    '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}',
+    // --- 体积优化:Vite 已按需打包所需代码,asar 中无需保留完整依赖包 ---
+    '!node_modules/@vicons/**',
+    '!node_modules/echarts/lib/chart/map/**',
+    '!node_modules/echarts/lib/component/dataZoom/**',
+    '!node_modules/echarts/lib/component/toolbox/**',
+    '!node_modules/echarts/lib/component/visualMap/**',
+    '!node_modules/echarts/lib/component/graphic/**',
+    '!node_modules/echarts/lib/component/title/**',
+    '!node_modules/echarts/lib/component/tooltip/**',
+    '!node_modules/echarts/lib/component/axis/**',
+    '!node_modules/echarts/lib/component/grid/**',
+    '!node_modules/echarts/lib/renderer/**',
+    // naive-ui 源码已被 Vite 打包进 renderer JS,asar 中无需保留完整 es/lib 目录
+    '!node_modules/naive-ui/es/**',
+    '!node_modules/naive-ui/lib/**',
   ],
   asarUnpack: ['resources/**'],
 
@@ -63,7 +78,8 @@ module.exports = {
     perMachine: true, // true 为安装到 Program Files,false 为 AppData
     createDesktopShortcut: true,
     createStartMenuShortcut: true,
-    uninstallDisplayName: 'Scas Tool'
+    uninstallDisplayName: 'Scas Tool',
+    deleteAppDataOnUninstall: false,
   },
 
   // --- macOS 配置 ---

+ 10 - 8
package.json

@@ -22,8 +22,8 @@
     "build:web": "cross-env NODE_ENV=production VITE_PUBLIC_PATH=/scas_tool/ vite build --config vite.config.web.mjs --emptyOutDir && esno ./factory/script/postBuild.ts"
   },
   "dependencies": {
-    "@electron-toolkit/preload": "^3.0.2",
-    "@electron-toolkit/utils": "^4.0.0",
+    "@electron-toolkit/preload": "^2.0.0",
+    "@electron-toolkit/utils": "^2.0.0",
     "@vicons/fa": "^0.13.0",
     "@vicons/ionicons4": "^0.13.0",
     "dayjs": "^1.11.23",
@@ -37,18 +37,20 @@
     "@electron-toolkit/eslint-config-prettier": "3.0.0",
     "@electron-toolkit/eslint-config-ts": "^3.1.0",
     "@electron-toolkit/tsconfig": "^2.0.0",
-    "@types/node": "^22.19.1",
+    "@types/node": "^18.19.0",
     "@vitejs/plugin-vue": "^6.0.2",
     "@vitejs/plugin-vue-jsx": "^5.1.6",
+    "cross-env": "^10.1.0",
     "echarts": "^6.1.0",
-    "electron": "^39.2.6",
-    "electron-builder": "^26.0.12",
-    "electron-vite": "^5.0.0",
+    "electron": "^14.0.0",
+    "electron-builder": "^24.13.3",
+    "electron-vite": "^4.0.0",
     "eslint": "^9.39.1",
     "eslint-plugin-vue": "^10.6.2",
+    "esno": "^4.8.0",
     "prettier": "^3.7.4",
-    "typescript": "^5.9.3",
-    "vite": "^7.2.6",
+    "typescript": "^5.4.0",
+    "vite": "^5.4.0",
     "vue": "^3.5.25",
     "vue-eslint-parser": "^10.2.0",
     "vue-tsc": "^3.1.6"

A különbségek nem kerülnek megjelenítésre, a fájl túl nagy
+ 386 - 47
pnpm-lock.yaml


+ 1 - 1
src/renderer/src/components/BaseModel.vue

@@ -61,7 +61,7 @@
 
 <script setup lang="ts">
 import { computed, ref, onMounted, watch } from 'vue'
-import { IosClose } from '@vicons/ionicons4'
+import { IosClose } from './simulator/icons'
 
 const props = defineProps({
   title: {

+ 2 - 2
src/renderer/src/components/simulator/DiagramPanel.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
 import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
 import { useI18n } from 'vue-i18n'
-import * as echarts from 'echarts'
-import type { EChartsOption } from 'echarts'
+import { echarts } from '../../lib/speaker/echarts/install'
+import type { EChartsOption } from 'echarts/core'
 import type { CalcResult, SpeakerParams } from '../../lib/speaker/types'
 import { buildChartEmptyOption, buildDiagramOption } from '../../lib/speaker/echarts'
 import { useChartPalette } from '../../theme/useChartPalette'

+ 1 - 1
src/renderer/src/components/simulator/ParamsPanel.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { ref } from 'vue'
-import { Link, Unlink, UndoAlt } from '@vicons/fa'
+import { Link, Unlink, UndoAlt } from './icons'
 import type { Direction, NumberParamKey, SpeakerParams } from '../../lib/speaker/types'
 import { DEG } from '../../lib/speaker/calc'
 import { useI18n } from 'vue-i18n'

+ 2 - 2
src/renderer/src/components/simulator/SPLChartPanel.vue

@@ -1,8 +1,8 @@
 <script setup lang="ts">
 import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
 import { useI18n } from 'vue-i18n'
-import * as echarts from 'echarts'
-import type { EChartsOption } from 'echarts'
+import { echarts } from '../../lib/speaker/echarts/install'
+import type { EChartsOption } from 'echarts/core'
 import type { CalcResult, SpeakerParams } from '../../lib/speaker/types'
 import { buildChartEmptyOption, buildSplChartOption } from '../../lib/speaker/echarts'
 import { useChartPalette } from '../../theme/useChartPalette'

+ 1 - 1
src/renderer/src/components/simulator/SpeakerSimulator.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { reactive, ref } from 'vue'
-import { SlidersH } from '@vicons/fa'
+import { SlidersH } from './icons'
 import type {
   Assessment,
   CalcResult,

+ 1 - 1
src/renderer/src/components/simulator/ThemeToggle.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import { computed, unref } from 'vue'
-import { Sun, Moon, Language } from '@vicons/fa'
+import { Sun, Moon, Language } from './icons'
 import { i18n } from '../../locales'
 import { useLocale } from '../../locales/useLocale'
 import type { LocaleType } from '../../types/i18n'

+ 9 - 0
src/renderer/src/components/simulator/icons.ts

@@ -0,0 +1,9 @@
+/** 按需导入图标,避免全量打包 @vicons(项目只用到 7 个图标) */
+export { default as Link } from '@vicons/fa/es/Link'
+export { default as Unlink } from '@vicons/fa/es/Unlink'
+export { default as UndoAlt } from '@vicons/fa/es/UndoAlt'
+export { default as Sun } from '@vicons/fa/es/Sun'
+export { default as Moon } from '@vicons/fa/es/Moon'
+export { default as Language } from '@vicons/fa/es/Language'
+export { default as SlidersH } from '@vicons/fa/es/SlidersH'
+export { default as IosClose } from '@vicons/ionicons4/es/IosClose'

+ 16 - 0
src/renderer/src/lib/speaker/echarts/install.ts

@@ -0,0 +1,16 @@
+/** ECharts 按需注册:只打包用到的图表与组件,大幅减小包体积 */
+import * as echarts from 'echarts/core'
+import { LineChart, ScatterChart } from 'echarts/charts'
+import { GridComponent, TooltipComponent, TitleComponent } from 'echarts/components'
+import { CanvasRenderer } from 'echarts/renderers'
+
+echarts.use([
+  LineChart,
+  ScatterChart,
+  GridComponent,
+  TooltipComponent,
+  TitleComponent,
+  CanvasRenderer
+])
+
+export { echarts }

Nem az összes módosított fájl került megjelenítésre, mert túl sok fájl változott