Skip to content

Instantly share code, notes, and snippets.

@goldhand
Created February 10, 2017 22:19
Show Gist options
  • Save goldhand/7d94db602a65b50cf21b2863fe3b7613 to your computer and use it in GitHub Desktop.
Save goldhand/7d94db602a65b50cf21b2863fe3b7613 to your computer and use it in GitHub Desktop.
Get a bunch of dependencies from multiple package.json formated for npm install command
#!/usr/bin/env node
const fs = require('fs');
const path = require('path');
const args = process.argv.slice(2);
const targetDependencies = args.filter(arg => arg.includes('ependencies')).length
? args.filter(arg => arg.includes('ependencies'))
: ['peerDependencies', 'devDependencies', 'dependencies'];
const packageFiles = args.filter(arg => arg.includes('json')).length
? args.filter(arg => arg.includes('json'))
: ['package.json'];
const dependenciesObj = packageFiles
.map(packageFile => JSON.parse(fs.readFileSync(path.resolve(process.cwd(), packageFile), 'utf8')))
.map(packageJSON => targetDependencies.map(dependencyType => packageJSON[dependencyType]))
.reduce((a, b) => a.concat(b))
.filter(dependencyObj => dependencyObj)
.reduce((a, cv) => (Object.assign(a, cv)), {});
const dependenciesStr = Object.keys(dependenciesObj)
.map(dependency => `${dependency}@"${dependenciesObj[dependency]}"`)
.join(' ');
process.stdout.write(dependenciesStr);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment