Skip to content

Instantly share code, notes, and snippets.

@dantailby
Created March 14, 2016 15:07
Show Gist options
  • Save dantailby/3d42f631839682a9219e to your computer and use it in GitHub Desktop.
Save dantailby/3d42f631839682a9219e to your computer and use it in GitHub Desktop.
var fs = require('fs'),
npm = require('npm'),
_ = require('lodash'),
madge = require('madge');
module.exports = function() {
var obj = {};
npm.load({production:true,json:true}, function(err, npm) {
npm.commands.ls([], function(err, full, tree) {
generateDependencyTree(tree.name, tree);
madge(obj).image({
layout: 'dot',
fontFace: 'Arial',
imageColors: {
bgcolor: '#0b2536',
edge: '#b24747',
dependencies: '#a8f2c3',
fontColor: '#f1f0ef'
}
}, function(img) {
fs.writeFile('image.png', img, 'base64', function(err) {
if (err) {
console.log(err);
}
});
});
});
});
function generateDependencyTree(name, tree) {
if (!tree.dependencies) {
return;
}
var deps = getDependencies(tree.dependencies);
if(_.isUndefined(obj[name])) {
obj[name] = deps;
}
_.forEach(deps, function(dep, i) {
if (tree.dependencies[dep]) {
generateDependencyTree(dep, tree.dependencies[dep]);
}
});
}
function getDependencies(dependencies) {
return _.filter(Object.keys(dependencies), function(dep) {
return dep.indexOf('bbc-morph') > -1;
});
}
}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment