import { execFileSync } from 'node:child_process'; import { existsSync, rmSync, statSync } from 'node:fs'; import { resolve } from 'node:path'; const root = process.cwd(); const distDir = resolve(root, 'dist'); const zipPath = resolve(root, 'dist.zip'); if (!existsSync(distDir) || !statSync(distDir).isDirectory()) { console.error('[zip-dist] dist 目录不存在,请先完成构建'); process.exit(1); } if (existsSync(zipPath)) { rmSync(zipPath); } // 压缩 dist 内文件到根级(解压即 index.html / assets,便于直接上传部署) execFileSync('zip', ['-qr', zipPath, '.', '-x', '*.DS_Store', '-x', '__MACOSX/*'], { cwd: distDir, stdio: 'inherit', }); const sizeMb = (statSync(zipPath).size / (1024 * 1024)).toFixed(2); console.log(`[zip-dist] 已生成 ${zipPath}(${sizeMb} MB)`);