cost-of-modules
Version:
Find out which of your dependencies are slowing you down 🐢
71 lines (57 loc) • 1.57 kB
JavaScript
;
var helpers = require('./helpers');
helpers.setup();
console.log('Calculating...');
console.log();
/*
Get size for all node modules
{
// name: size in bytes,
a: 40,
b: 220
}
*/
var moduleSizes = helpers.getSizeForNodeModules();
/*
Get root dependencies from tree
These are the ones declared as dependendies in package.json
[a, b, c, d]
*/
var rootDependencies = helpers.getRootDependencies();
/*
Attach the nested dependendies in a flat manner
[{
name: rootDependency,
children: [a, b, c, d]
}]
*/
var flatDependencies = helpers.attachNestedDependencies(rootDependencies);
/*
Modules actual size = size of the module + size of it's children
*/
for (var i = 0; i < flatDependencies.length; i++) {
var dep = flatDependencies[i];
var sizeOfModule = moduleSizes[dep.name];
var sizeOfChildren = 0;
dep.children.forEach(function (child) {
sizeOfChildren += moduleSizes[child] || 0;
});
dep.actualSize = sizeOfModule + sizeOfChildren;
dep.numberOfChildren = dep.children.length;
}
/*
All dependencies =
Root dependencies + all their children
Deduplicated
*/
var allDependencies = helpers.getAllDependencies(flatDependencies);
/* Total size of node_modules */
var totalSize = 0;
allDependencies.forEach(function (dep) {
totalSize += moduleSizes[dep] || 0;
});
/* Display results */
helpers.displayResults(flatDependencies, allDependencies, totalSize);
/* Return to original state */
helpers.teardown();