genezio
Version:
Command line utility to interact with Genezio infrastructure.
37 lines (36 loc) • 1.32 kB
JavaScript
import fs from "fs";
import { getBundleFolderSizeLimit } from "./file.js";
function getTop5LargestPackages(packages) {
const sortedPackages = packages.sort((a, b) => b.totalSize - a.totalSize);
const top5Packages = sortedPackages.slice(0, 5);
const formatedSizes = top5Packages.map((pkg) => `${pkg.name} -> ${pkg.totalSize.toFixed(3)}mb`);
return formatedSizes;
}
export async function calculateBiggestFiles(dependencies, allNonJsFilesPaths) {
const fileSizes = [];
const nodeModulesData = [];
const promises = dependencies.map(async (file) => {
const depSize = await getBundleFolderSizeLimit(file.path);
const moduleData = {
name: file.name,
totalSize: depSize / 1024 ** 2,
};
nodeModulesData.push(moduleData);
});
await Promise.all(promises);
allNonJsFilesPaths.forEach((fileInfo) => {
const stats = fs.statSync(fileInfo.path);
if (!stats.isFile()) {
return;
}
const totalSize = stats.size;
fileSizes.push({
name: fileInfo.name + fileInfo.extension,
totalSize: totalSize / 1024 ** 2,
});
});
return {
dependenciesSize: getTop5LargestPackages(nodeModulesData),
filesSize: getTop5LargestPackages(fileSizes),
};
}