chore: use node-stream-zip to improve perfermanc and remove unused dependencies (#5946)

* chore: remove unused dependencies from package.json and yarn.lock

* fix: update backup extraction progress logging in BackupManager

---------

Co-authored-by: beyondkmp <beyondkmkp@gmail.com>
This commit is contained in:
beyondkmp 2025-05-13 13:41:06 +08:00 committed by GitHub
parent 909acf1da3
commit ff3d418622
3 changed files with 6 additions and 15 deletions

View File

@ -73,7 +73,6 @@
"@strongtz/win32-arm64-msvc": "^0.4.7",
"@tanstack/react-query": "^5.27.0",
"@types/react-infinite-scroll-component": "^5.0.0",
"adm-zip": "^0.5.16",
"archiver": "^7.0.1",
"async-mutex": "^0.5.0",
"color": "^5.0.0",
@ -84,7 +83,6 @@
"electron-updater": "6.6.4",
"electron-window-state": "^5.0.3",
"epub": "patch:epub@npm%3A1.3.0#~/.yarn/patches/epub-npm-1.3.0-8325494ffe.patch",
"extract-zip": "^2.0.1",
"fast-xml-parser": "^5.2.0",
"fetch-socks": "^1.3.2",
"fs-extra": "^11.2.0",

View File

@ -4,7 +4,7 @@ import archiver from 'archiver'
import { exec } from 'child_process'
import { app } from 'electron'
import Logger from 'electron-log'
import extract from 'extract-zip'
import StreamZip from 'node-stream-zip'
import * as fs from 'fs-extra'
import * as path from 'path'
import { createClient, CreateDirectoryOptions, FileStat } from 'webdav'
@ -231,15 +231,10 @@ class BackupManager {
Logger.log('[backup] step 1: unzip backup file', this.tempDir)
// 使用 extract-zip 解压
await extract(backupPath, {
dir: this.tempDir,
onEntry: () => {
// 这里可以处理进度,但 extract-zip 不提供总条目数信息
onProgress({ stage: 'extracting', progress: 15, total: 100 })
}
})
onProgress({ stage: 'extracting', progress: 25, total: 100 })
const zip = new StreamZip.async({ file: backupPath })
onProgress({ stage: 'extracting', progress: 15, total: 100 })
await zip.extract(null, this.tempDir)
onProgress({ stage: 'extracted', progress: 25, total: 100 })
Logger.log('[backup] step 2: read data.json')
// 读取 data.json

View File

@ -4392,7 +4392,6 @@ __metadata:
"@vitest/coverage-v8": "npm:^3.1.1"
"@vitest/ui": "npm:^3.1.1"
"@xyflow/react": "npm:^12.4.4"
adm-zip: "npm:^0.5.16"
antd: "npm:^5.22.5"
applescript: "npm:^1.0.0"
archiver: "npm:^7.0.1"
@ -4423,7 +4422,6 @@ __metadata:
eslint-plugin-react-hooks: "npm:^5.2.0"
eslint-plugin-simple-import-sort: "npm:^12.1.1"
eslint-plugin-unused-imports: "npm:^4.1.4"
extract-zip: "npm:^2.0.1"
fast-xml-parser: "npm:^5.2.0"
fetch-socks: "npm:^1.3.2"
fs-extra: "npm:^11.2.0"
@ -4540,7 +4538,7 @@ __metadata:
languageName: node
linkType: hard
"adm-zip@npm:^0.5.16, adm-zip@npm:^0.5.9":
"adm-zip@npm:^0.5.9":
version: 0.5.16
resolution: "adm-zip@npm:0.5.16"
checksum: 10c0/6f10119d4570c7ba76dcf428abb8d3f69e63f92e51f700a542b43d4c0130373dd2ddfc8f85059f12d4a843703a90c3970cfd17876844b4f3f48bf042bfa6b49f