diff options
Diffstat (limited to 'deps/npm/lib/ls.js')
-rw-r--r-- | deps/npm/lib/ls.js | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/deps/npm/lib/ls.js b/deps/npm/lib/ls.js index 3c0e4384dd..b993dd6235 100644 --- a/deps/npm/lib/ls.js +++ b/deps/npm/lib/ls.js @@ -9,7 +9,6 @@ module.exports = exports = ls var path = require('path') var url = require('url') var readPackageTree = require('read-package-tree') -var log = require('npmlog') var archy = require('archy') var semver = require('semver') var color = require('ansicolors') @@ -19,7 +18,7 @@ var sortedObject = require('sorted-object') var extend = Object.assign || require('util')._extend var npm = require('./npm.js') var mutateIntoLogicalTree = require('./install/mutate-into-logical-tree.js') -var recalculateMetadata = require('./install/deps.js').recalculateMetadata +var computeMetadata = require('./install/deps.js').computeMetadata var packageId = require('./utils/package-id.js') var usage = require('./utils/usage') var output = require('./utils/output.js') @@ -37,14 +36,14 @@ function ls (args, silent, cb) { silent = false } var dir = path.resolve(npm.dir, '..') - readPackageTree(dir, andRecalculateMetadata(iferr(cb, function (physicalTree) { + readPackageTree(dir, andComputeMetadata(iferr(cb, function (physicalTree) { lsFromTree(dir, physicalTree, args, silent, cb) }))) } -function andRecalculateMetadata (next) { +function andComputeMetadata (next) { return function (er, tree) { - recalculateMetadata(tree || {}, log, next) + next(null, computeMetadata(tree || {})) } } @@ -63,14 +62,18 @@ var lsFromTree = ls.fromTree = function (dir, physicalTree, args, silent, cb) { args = [] } else { args = args.map(function (a) { - var p = npa(a) - var name = p.name - // When version spec is missing, we'll skip using it when filtering. - // Otherwise, `semver.validRange` would return '*', which won't - // match prerelease versions. - var ver = (p.rawSpec && - (semver.validRange(p.rawSpec) || '')) - return [ name, ver, a ] + if (typeof a === 'object') { + return [a.package.name, a.package.version, a] + } else { + var p = npa(a) + var name = p.name + // When version spec is missing, we'll skip using it when filtering. + // Otherwise, `semver.validRange` would return '*', which won't + // match prerelease versions. + var ver = (p.rawSpec && + (semver.validRange(p.rawSpec) || '')) + return [ name, ver, a ] + } }) } @@ -293,13 +296,15 @@ function filterFound (root, args) { var argVersion = args[ii][1] var argRaw = args[ii][2] var found - if (depName === argName && argVersion) { + if (typeof argRaw === 'object') { + if (dep.path === argRaw.path) { + found = true + } + } else if (depName === argName && argVersion) { found = semver.satisfies(dep.version, argVersion, true) } else if (depName === argName) { // If version is missing from arg, just do a name match. found = true - } else if (dep.path === argRaw) { - found = true } if (found) { dep._found = 'explicit' @@ -474,7 +479,7 @@ function makeParseable (data, long, dir, depth, parent, d) { .sort(alphasort).map(function (d) { return makeParseable(data.dependencies[d], long, dir, depth + 1, data, d) })) - .filter(function (x) { return x }) + .filter(function (x) { return x && x.length }) .join('\n') } |