diff options
author | Forrest L Norvell <forrest@npmjs.com> | 2016-03-29 23:30:51 -0700 |
---|---|---|
committer | Myles Borins <mborins@us.ibm.com> | 2016-04-01 14:47:39 -0700 |
commit | 0928584444ac6edf1ead0b93c9d05b1124183702 (patch) | |
tree | f64c5646b8e2817009e7afe97c2670c73d38a7eb /deps/npm/lib/ls.js | |
parent | 39de601e1c3eda92eb2e37eca4e6aa960f206f39 (diff) | |
download | node-new-0928584444ac6edf1ead0b93c9d05b1124183702.tar.gz |
deps: upgrade npm to 3.8.3
PR-URL: https://github.com/npm/node/pull/6
Reviewed-By: Evan Lucas <evanlucas@me.com>
Diffstat (limited to 'deps/npm/lib/ls.js')
-rw-r--r-- | deps/npm/lib/ls.js | 46 |
1 files changed, 30 insertions, 16 deletions
diff --git a/deps/npm/lib/ls.js b/deps/npm/lib/ls.js index dbaae5190e..b5dc44888e 100644 --- a/deps/npm/lib/ls.js +++ b/deps/npm/lib/ls.js @@ -42,6 +42,10 @@ function andRecalculateMetadata (next) { } } +function inList (list, value) { + return list.indexOf(value) !== -1 +} + var lsFromTree = ls.fromTree = function (dir, physicalTree, args, silent, cb) { if (typeof cb !== 'function') { cb = silent @@ -56,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 ] }) } @@ -79,7 +82,7 @@ var lsFromTree = ls.fromTree = function (dir, physicalTree, args, silent, cb) { // the raw data can be circular out = JSON.stringify(d, function (k, o) { if (typeof o === 'object') { - if (seen.indexOf(o) !== -1) return '[Circular]' + if (inList(seen, o)) return '[Circular]' seen.push(o) } return o @@ -117,12 +120,18 @@ function filterByEnv (data) { var dev = npm.config.get('dev') || /^dev(elopment)?$/.test(npm.config.get('only')) var production = npm.config.get('production') || /^prod(uction)?$/.test(npm.config.get('only')) var dependencies = {} - var devDependencies = data.devDependencies || [] + var devKeys = Object.keys(data.devDependencies || []) + var prodKeys = Object.keys(data._dependencies || []) Object.keys(data.dependencies).forEach(function (name) { - var keys = Object.keys(devDependencies) - if (dev && !production && keys.indexOf(name) === -1) return - if (!dev && keys.indexOf(name) !== -1 && data.dependencies[name].missing) return - dependencies[name] = data.dependencies[name] + if (!dev && inList(devKeys, name) && data.dependencies[name].missing) { + return + } + + if ((dev && inList(devKeys, name)) || // only --dev + (production && inList(prodKeys, name)) || // only --production + (!dev && !production)) { // no --production|--dev|--only=xxx + dependencies[name] = data.dependencies[name] + } }) data.dependencies = dependencies } @@ -249,7 +258,7 @@ function bfsify (root) { Object.keys(deps).forEach(function (d) { var dep = deps[d] if (dep.missing) return - if (seen.indexOf(dep) !== -1) { + if (inList(seen, dep)) { if (npm.config.get('parseable') || !npm.config.get('long')) { delete deps[d] return @@ -270,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 @@ -286,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 @@ -420,7 +434,7 @@ function getExtras (data) { function makeParseable (data, long, dir, depth, parent, d) { depth = depth || 0 - + if (depth > npm.config.get('depth')) return [ makeParseable_(data, long, dir, depth, parent, d) ] return [ makeParseable_(data, long, dir, depth, parent, d) ] .concat(Object.keys(data.dependencies || {}) .sort(alphasort).map(function (d) { |