Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/lib/ls.js
diff options
context:
space:
mode:
authorRebecca Turner <me@re-becca.org>2016-02-19 02:09:59 +0300
committerRebecca Turner <me@re-becca.org>2016-03-04 02:17:20 +0300
commit99337b469163a4b211b9c6ff1aa9712ae0d601d2 (patch)
tree9011a279bf80dbcdb3a9f5a075b341a848878ef9 /lib/ls.js
parentbb14204183dad620a6650452a26cdc64111f8136 (diff)
install: Make install reports only include versions installed
This makes install select modules to display by install path. Previously it was using name@version, which worked as long as you didn't have duplicates in your tree, but was basically wrong forever if you did (as in npm's own tree).
Diffstat (limited to 'lib/ls.js')
-rw-r--r--lib/ls.js20
1 files changed, 12 insertions, 8 deletions
diff --git a/lib/ls.js b/lib/ls.js
index a64093b5e..8be186fdb 100644
--- a/lib/ls.js
+++ b/lib/ls.js
@@ -60,8 +60,7 @@ var lsFromTree = ls.fromTree = function (dir, physicalTree, args, silent, cb) {
var p = npa(a)
var name = p.name
var ver = semver.validRange(p.rawSpec) || ''
-
- return [ name, ver ]
+ return [ name, ver, a ]
})
}
@@ -280,15 +279,20 @@ function filterFound (root, args) {
if (!args.length) return root
var deps = root.dependencies
if (deps) {
- Object.keys(deps).forEach(function (d) {
- var dep = filterFound(deps[d], args)
+ Object.keys(deps).forEach(function (depName) {
+ var dep = filterFound(deps[depName], args)
if (dep.peerMissing) return
// see if this one itself matches
var found = false
- for (var i = 0; !found && i < args.length; i++) {
- if (d === args[i][0]) {
- found = semver.satisfies(dep.version, args[i][1], true)
+ for (var ii = 0; !found && ii < args.length; ii++) {
+ var argName = args[ii][0]
+ var argVersion = args[ii][1]
+ var argRaw = args[ii][2]
+ if (depName === argName) {
+ found = semver.satisfies(dep.version, argVersion, true)
+ } else if (dep.path === argRaw) {
+ found = true
}
}
// included explicitly
@@ -296,7 +300,7 @@ function filterFound (root, args) {
// included because a child was included
if (dep._found && !root._found) root._found = 1
// not included
- if (!dep._found) delete deps[d]
+ if (!dep._found) delete deps[depName]
})
}
if (!root._found) root._found = false