summaryrefslogtreecommitdiff
path: root/deps/npm/lib/dedupe.js
diff options
context:
space:
mode:
authorisaacs <i@izs.me>2014-02-16 20:43:16 -0800
committerisaacs <i@izs.me>2014-02-16 20:43:16 -0800
commitec2fc4ca4d3eacaa3dc1db1673169b89233b9823 (patch)
tree0aa8a647e5111653bdf9c122182be93bf8823c7b /deps/npm/lib/dedupe.js
parent86b8d84811484763b251b9a8a2b9e673964ea6b5 (diff)
downloadnode-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.js22
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()
}