From ff3d418622e7b715c0f96900c2a4bd9d2bb02957 Mon Sep 17 00:00:00 2001 From: beyondkmp Date: Tue, 13 May 2025 13:41:06 +0800 Subject: [PATCH] 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 --- package.json | 2 -- src/main/services/BackupManager.ts | 15 +++++---------- yarn.lock | 4 +--- 3 files changed, 6 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 306312cda3..2b3483a952 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/src/main/services/BackupManager.ts b/src/main/services/BackupManager.ts index ef96529903..6be19d035b 100644 --- a/src/main/services/BackupManager.ts +++ b/src/main/services/BackupManager.ts @@ -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 diff --git a/yarn.lock b/yarn.lock index 05068932fd..4d7e8ea9f7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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