Created
December 3, 2017 00:52
-
-
Save justinbmeyer/40c3f48f81f138e6f764df4031db0465 to your computer and use it in GitHub Desktop.
dependency-size.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script src="../../../node_modules/steal/steal.js" main="can/can"> | |
</script> | |
<script> | |
var allDeps = {}; | |
function getEveryDep(moduleName) { | |
if(allDeps[moduleName]) { | |
return allDeps[moduleName]; | |
} | |
var load = System._traceData.loads[moduleName]; | |
var deps = new Set(); | |
load.metadata.dependencies.forEach(function(dep){ | |
deps.add(dep); | |
getEveryDep(dep).forEach(function(dep){ | |
deps.add(dep); | |
}); | |
}); | |
allDeps[moduleName] = deps; | |
return deps; | |
} | |
var sizes = {}; | |
function getSize(moduleName) { | |
if(sizes[moduleName]) { | |
return sizes[moduleName]; | |
} | |
var load = System._traceData.loads[moduleName]; | |
var size = load.source.length; | |
var deps = load.metadata.dependencies; | |
deps.forEach(function(dep){ | |
size += getSize(dep); | |
}); | |
sizes[moduleName] = size; | |
return size; | |
} | |
function getTotal(moduleName){ | |
var deps = allDeps[moduleName]; | |
var size = System._traceData.loads[moduleName].source.length; | |
deps.forEach(function(depName){ | |
size += System._traceData.loads[depName].source.length | |
}); | |
return size; | |
} | |
steal.done().then(function(){ | |
System.import("can").then(function(can){ | |
getEveryDep("can@4.0.0-pre.3#can"); | |
var res = Object.keys(allDeps).map(function(moduleName){ | |
return [moduleName, getTotal(moduleName)]; | |
}).sort(function(a, b){ | |
return b[1] - a[1]; | |
}); | |
console.log(res); | |
}); | |
}); | |
var showDeps = function(moduleName){ | |
var cache = {}; | |
var getDeps = function(moduleName){ | |
if(cache[moduleName]) { | |
return cache[moduleName]; | |
} | |
var load = System._traceData.loads[moduleName]; | |
var deps = load.metadata.dependencies; | |
var depSizes = deps.map(function(dep){ | |
var depSize = System._traceData.loads[dep].source.length; | |
var totalSize = getTotal(dep); | |
return [dep,totalSize, depSize,totalSize - depSize, getDeps(dep) ] | |
}).sort(function(a, b){ | |
return b[1] - a[1]; | |
}); | |
return cache[moduleName] = depSizes; | |
} | |
return getDeps(moduleName); | |
} | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment