diff --git a/src/cli.js b/src/cli.js index 858a6f43..51ab6317 100755 --- a/src/cli.js +++ b/src/cli.js @@ -47,7 +47,12 @@ function prettify(caption, deps) { return list.length ? [caption].concat(list) : []; } -function print(result, log, json) { +function mapMissing(missing, rootDir) { + return lodash.map(missing, (foundInFiles, key) => + `${key}: ${lodash.replace(lodash.first(foundInFiles), rootDir, '.')}`); +} + +function print(result, log, json, rootDir) { if (json) { log(JSON.stringify(result, (key, value) => (lodash.isError(value) ? value.stack : value))); } else if (noIssue(result)) { @@ -55,7 +60,7 @@ function print(result, log, json) { } else { const deps = prettify('Unused dependencies', result.dependencies); const devDeps = prettify('Unused devDependencies', result.devDependencies); - const missing = prettify('Missing dependencies', Object.keys(result.missing)); + const missing = prettify('Missing dependencies', mapMissing(result.missing, rootDir)); const content = deps.concat(devDeps, missing).join('\n'); log(content); } @@ -119,7 +124,7 @@ export default function cli(args, log, error, exit) { specials: getSpecials(opt.argv.specials), skipMissing: opt.argv.skipMissing, })) - .then((result) => print(result, log, opt.argv.json)) + .then((result) => print(result, log, opt.argv.json, rootDir)) .then((result) => exit((opt.argv.json || noIssue(result)) ? 0 : -1)) .catch((errorMessage) => { error(errorMessage); diff --git a/test/cli.js b/test/cli.js index 668d8dfd..4d95bfaa 100644 --- a/test/cli.js +++ b/test/cli.js @@ -131,7 +131,7 @@ describe('depcheck command line', () => { exitCode.should.equal(0); })); - it('should output unused dependencies when happen', () => + it('should output unused dependencies', () => testCli(makeArgv('bad', {})) .then(({ logs, error, exitCode }) => { logs.should.have.length(2); @@ -142,7 +142,7 @@ describe('depcheck command line', () => { exitCode.should.equal(-1); })); - it('should output unused devDependencies when happen', () => + it('should output unused devDependencies', () => testCli(makeArgv('dev', {})) .then(({ logs, error, exitCode }) => { logs.should.have.length(2); @@ -153,6 +153,17 @@ describe('depcheck command line', () => { exitCode.should.equal(-1); })); + it('should output missing dependencies', () => + testCli(makeArgv('missing', {})) + .then(({ logs, error, exitCode }) => { + logs.should.have.length(2); + logs[0].should.equal('Missing dependencies'); + logs[1].should.containEql('missing-dep'); + + error.should.be.empty(); + exitCode.should.equal(-1); + })); + it('should recognize JSX file even only pass jsx parser and require detector', () => testCli(makeArgv('jsx', { argv: ['--parsers="*.jsx:jsx"', '--dectors=requireCallExpression'],