diff --git a/README.md b/README.md index 05799a2..53b0633 100644 --- a/README.md +++ b/README.md @@ -8,8 +8,14 @@ Outputs the diff between two package.json dependencies ![](example.gif) ```bash -npm i -g pkg-diff -pkg-diff path/to/project-1 path/to/project-2 +$ npm i -g pkg-diff +$ pkg-diff path/to/project-1 path/to/project-2 +``` + +If you want to ignore any dependency type you can use `--ignore`. + +```bash +$ pkg-diff --ignore=peer,optional path/to/project-1 path/to/project-2 ``` ## License diff --git a/package.json b/package.json index 55fc79d..4f2a7ac 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "dependencies": { "babel-runtime": "^6.20.0", "chalk": "^1.1.3", - "diff": "^3.2.0" + "diff": "^3.2.0", + "minimist": "^1.2.0" }, "devDependencies": { "ava": "^0.17.0", diff --git a/src/getDependencies.js b/src/getDependencies.js index 0ea453a..9ccc46e 100644 --- a/src/getDependencies.js +++ b/src/getDependencies.js @@ -4,13 +4,13 @@ function resolvePath (path) { return /package.json$/.test(path) ? resolve(path) : resolve(path, 'package.json') } -export default function getDependencies (path) { +export default function getDependencies (path, ignore = '') { const pkg = require(resolvePath(path)) - const dependencies = [ - pkg.dependencies, - pkg.devDependencies, - pkg.peerDependencies, - pkg.optionalDependencies - ] - return Object.assign({}, ...dependencies) + + return { + ...(ignore.includes('dep') ? {} : pkg.dependencies), + ...(ignore.includes('dev') ? {} : pkg.devDependencies), + ...(ignore.includes('peer') ? {} : pkg.peerDependencies), + ...(ignore.includes('optional') ? {} : pkg.optionalDependencies) + } } diff --git a/src/index.js b/src/index.js index 1d0ad63..8ce4daf 100755 --- a/src/index.js +++ b/src/index.js @@ -1,11 +1,14 @@ #!/usr/bin/env node --harmony +import minimist from 'minimist' import getDependencies from './getDependencies' import getDiff from './getDiff' import createMessage from './createMessage' +const argv = minimist(process.argv.slice(2)) + const deps = getDiff( - getDependencies(process.argv[2]), - getDependencies(process.argv[3]) + getDependencies(argv._[0], argv.ignore), + getDependencies(argv._[1], argv.ignore) ) deps.map(createMessage).forEach(msg => console.log(msg)) diff --git a/test/getDependencies.js b/test/getDependencies.js index baf4585..a3a0e7d 100644 --- a/test/getDependencies.js +++ b/test/getDependencies.js @@ -12,13 +12,33 @@ test('returns with all valid dependencies', t => { dep4: '4.0.0' } + t.deepEqual(getDependencies(pkgPath), expected) + t.deepEqual(getDependencies(projectPath), expected) +}) + +test('ignores specified dependencies', t => { + const dep = { dep1: '1.0.0' } + const dev = { dep2: '2.0.0' } + const peer = { dep3: '3.0.0' } + const optional = { dep4: '4.0.0' } + + t.deepEqual( + getDependencies(projectPath, 'dep'), + { ...dev, ...peer, ...optional } + ) + + t.deepEqual( + getDependencies(projectPath, 'dev'), + { ...dep, ...peer, ...optional } + ) + t.deepEqual( - getDependencies(pkgPath), - expected + getDependencies(projectPath, 'peer'), + { ...dep, ...dev, ...optional } ) t.deepEqual( - getDependencies(projectPath), - expected + getDependencies(projectPath, 'optional'), + { ...dep, ...dev, ...peer } ) })