diff options
author | isaacs <i@izs.me> | 2014-02-16 20:43:16 -0800 |
---|---|---|
committer | isaacs <i@izs.me> | 2014-02-16 20:43:16 -0800 |
commit | ec2fc4ca4d3eacaa3dc1db1673169b89233b9823 (patch) | |
tree | 0aa8a647e5111653bdf9c122182be93bf8823c7b /deps/npm/lib/dedupe.js | |
parent | 86b8d84811484763b251b9a8a2b9e673964ea6b5 (diff) | |
download | node-npm-v1.4.3.tar.gz |
npm: upgrade to 1.4.3npm-v1.4.3
Diffstat (limited to 'deps/npm/lib/dedupe.js')
-rw-r--r-- | deps/npm/lib/dedupe.js | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/deps/npm/lib/dedupe.js b/deps/npm/lib/dedupe.js index ce161a46c..55823d967 100644 --- a/deps/npm/lib/dedupe.js +++ b/deps/npm/lib/dedupe.js @@ -16,7 +16,7 @@ var util = require("util") var RegClient = require("npm-registry-client") var npmconf = require("npmconf") var semver = require("semver") -var rimraf = require("rimraf") +var rm = require("./utils/gently-rm.js") var log = require("npmlog") var npm = require("./npm.js") @@ -208,7 +208,7 @@ function installAndRetest (set, filter, dir, unavoidable, silent, cb) { }, function (er, installed) { if (er) return cb(er) - asyncMap(remove, rimraf, function (er) { + asyncMap(remove, rm, function (er) { if (er) return cb(er) remove.forEach(function (r) { log.info("rm", r) @@ -249,10 +249,10 @@ function findVersions (npm, summary, cb) { var regVersions = er ? [] : Object.keys(data.versions) var locMatch = bestMatch(versions, ranges) var regMatch; - var tag = npm.config.get("tag"); - var distTags = data["dist-tags"]; - if (distTags && distTags[tag] && data.versions[distTags[tag]]) { - regMatch = distTags[tag] + var tag = npm.config.get("tag") + var distTag = data["dist-tags"] && data["dist-tags"][tag] + if (distTag && data.versions[distTag] && matches(distTag, ranges)) { + regMatch = distTag } else { regMatch = bestMatch(regVersions, ranges) } @@ -262,11 +262,15 @@ function findVersions (npm, summary, cb) { }, cb) } +function matches (version, ranges) { + return !ranges.some(function (r) { + return !semver.satisfies(version, r, true) + }) +} + function bestMatch (versions, ranges) { return versions.filter(function (v) { - return !ranges.some(function (r) { - return !semver.satisfies(v, r, true) - }) + return matches(v, ranges) }).sort(semver.compareLoose).pop() } |