summaryrefslogtreecommitdiff
path: root/deps/npm/lib/fetch-package-metadata.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/fetch-package-metadata.js')
-rw-r--r--deps/npm/lib/fetch-package-metadata.js11
1 files changed, 10 insertions, 1 deletions
diff --git a/deps/npm/lib/fetch-package-metadata.js b/deps/npm/lib/fetch-package-metadata.js
index d4f02bb278..85322304d5 100644
--- a/deps/npm/lib/fetch-package-metadata.js
+++ b/deps/npm/lib/fetch-package-metadata.js
@@ -122,7 +122,15 @@ function fetchNamedPackageData (dep, next) {
}
function pickVersionFromRegistryDocument (pkg) {
if (!regCache[url]) regCache[url] = pkg
- var versions = Object.keys(pkg.versions).sort(semver.rcompare)
+ var versions = Object.keys(pkg.versions)
+
+ var invalidVersions = versions.filter(function (v) { return !semver.valid(v) })
+ if (invalidVersions.length > 0) {
+ log.warn('pickVersion', 'The package %s has invalid semver-version(s): %s. This usually only happens for unofficial private registries. ' +
+ 'You should delete or re-publish the invalid versions.', pkg.name, invalidVersions.join(', '))
+ }
+
+ versions = versions.filter(function (v) { return semver.valid(v) }).sort(semver.rcompare)
if (dep.type === 'tag') {
var tagVersion = pkg['dist-tags'][dep.spec]
@@ -169,6 +177,7 @@ function fetchNamedPackageData (dep, next) {
: 'No valid targets found.'
var er = new Error('No compatible version found: ' +
dep.raw + '\n' + targets)
+ er.code = 'ETARGET'
return next(er)
}
}))