From 8a579be4c192ae11cea96feff2106033b316c66f Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Thu, 10 Apr 2025 13:11:40 +0800 Subject: [PATCH] refactor(after-pack): rename function to keepArchNodeFiles and update logic for retaining architecture-specific node modules close PR#4522 --- scripts/after-pack.js | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/scripts/after-pack.js b/scripts/after-pack.js index e4b20db5..b226e8a2 100644 --- a/scripts/after-pack.js +++ b/scripts/after-pack.js @@ -18,35 +18,48 @@ exports.default = async function (context) { 'node_modules' ) - removeDifferentArchNodeFiles(node_modules_path, '@libsql', arch === Arch.arm64 ? ['darwin-arm64'] : ['darwin-x64']) + keepPackageNodeFiles(node_modules_path, '@libsql', arch === Arch.arm64 ? ['darwin-arm64'] : ['darwin-x64']) } if (platform === 'linux') { const node_modules_path = path.join(context.appOutDir, 'resources', 'app.asar.unpacked', 'node_modules') const _arch = arch === Arch.arm64 ? ['linux-arm64-gnu', 'linux-arm64-musl'] : ['linux-x64-gnu', 'linux-x64-musl'] - removeDifferentArchNodeFiles(node_modules_path, '@libsql', _arch) + keepPackageNodeFiles(node_modules_path, '@libsql', _arch) } if (platform === 'windows') { const node_modules_path = path.join(context.appOutDir, 'resources', 'app.asar.unpacked', 'node_modules') if (arch === Arch.arm64) { - removeDifferentArchNodeFiles(node_modules_path, '@strongtz', ['win32-arm64-msvc']) - removeDifferentArchNodeFiles(node_modules_path, '@libsql', ['win32-arm64-msvc']) + keepPackageNodeFiles(node_modules_path, '@strongtz', ['win32-arm64-msvc']) + keepPackageNodeFiles(node_modules_path, '@libsql', ['win32-arm64-msvc']) } if (arch === Arch.x64) { - removeDifferentArchNodeFiles(node_modules_path, '@strongtz', ['win32-x64-msvc']) - removeDifferentArchNodeFiles(node_modules_path, '@libsql', ['win32-x64-msvc']) + keepPackageNodeFiles(node_modules_path, '@strongtz', ['win32-x64-msvc']) + keepPackageNodeFiles(node_modules_path, '@libsql', ['win32-x64-msvc']) } } } -function removeDifferentArchNodeFiles(nodeModulesPath, packageName, arch) { +/** + * 使用指定架构的 node_modules 文件 + * @param {*} nodeModulesPath + * @param {*} packageName + * @param {*} arch + * @returns + */ +function keepPackageNodeFiles(nodeModulesPath, packageName, arch) { const modulePath = path.join(nodeModulesPath, packageName) + + if (!fs.existsSync(modulePath)) { + console.log(`[After Pack] Directory does not exist: ${modulePath}`) + return + } + const dirs = fs.readdirSync(modulePath) dirs .filter((dir) => !arch.includes(dir)) .forEach((dir) => { fs.rmSync(path.join(modulePath, dir), { recursive: true, force: true }) - console.log(`Removed dir: ${dir}`, arch) + console.log(`[After Pack] Removed dir: ${dir}`, arch) }) }