import { readdir, stat } from 'node:fs'; import { formatBytes, sum } from '@pureadmin/utils'; const fileListTotal: number[] = []; /** 获取指定文件夹中所有文件的总大小 */ const getPackageSize = options => { const { folder = 'dist', callback, format = true } = options; readdir(folder, (err, files: string[]) => { if (err) throw err; let count = 0; const checkEnd = () => { ++count == files.length && callback(format ? formatBytes(sum(fileListTotal)) : sum(fileListTotal)); }; files.forEach((item: string) => { stat(`${folder}/${item}`, async (err, stats) => { if (err) throw err; if (stats.isFile()) { fileListTotal.push(stats.size); checkEnd(); } else if (stats.isDirectory()) { getPackageSize({ folder: `${folder}/${item}/`, callback: checkEnd, }); } }); }); files.length === 0 && callback(0); }); }; export { getPackageSize };