Skip to content

Instantly share code, notes, and snippets.

@fivetanley
Last active November 21, 2016 23:58
Show Gist options
  • Save fivetanley/749c6fdfcfab078edae0b1016483fd16 to your computer and use it in GitHub Desktop.
Save fivetanley/749c6fdfcfab078edae0b1016483fd16 to your computer and use it in GitHub Desktop.
let deps = require('./deps');
let _ = require('lodash');
let execSync = require('child_process').execSync;
let glob = require('glob').sync;
function mapDeepVersions(dependencies, dependencyMap) {
Object.keys(dependencies).forEach((key) => {
let dependency = dependencies[key];
let versions = dependencyMap[key] = dependencyMap[key] || [];
versions.push(dependency.version);
if (dependency.dependencies) {
mapDeepVersions(dependency.dependencies, dependencyMap);
}
});
return dependencyMap;
}
let depMaps = glob('packages/*').map(dir => {
let deps = JSON.parse(execSync(`cd ${dir} && npm ls --json`));
return mapDeepVersions(deps.dependencies, Object.create(null));
});
let combined = _.merge.apply(_, [{}].concat(depMaps));
Object.keys(combined).forEach(dep => {
combined[dep] = _(combined[dep]).flatten().sort().uniq().value();
});
console.log(combined);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment