Skip to content

Commit 442a88b

Browse files
committed
check save-prefix satisfies requested version range
1 parent 656bce7 commit 442a88b

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

lib/install/deps.js

+12-1
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,18 @@ function computeVersionSpec (tree, child) {
318318
if (semver.valid(version, true) &&
319319
semver.gte(version, '0.1.0', true) &&
320320
!npm.config.get('save-exact')) {
321-
rangeDescriptor = npm.config.get('save-prefix')
321+
if (requested.type === 'range') {
322+
// add save-prefix '^' or '~' only when the future candidates satisfies the
323+
// requested range version spec
324+
var futureVersion = semver.maxSatisfying([semver.inc(version, 'major'),
325+
semver.inc(version, 'minor'), semver.inc(version, 'patch')],
326+
npm.config.get('save-prefix') + version)
327+
if (semver.satisfies(futureVersion, requested.fetchSpec)) {
328+
rangeDescriptor = npm.config.get('save-prefix')
329+
}
330+
} else {
331+
rangeDescriptor = npm.config.get('save-prefix')
332+
}
322333
}
323334
if (requested.type === 'alias') {
324335
rangeDescriptor = `npm:${requested.subSpec.name}@${rangeDescriptor}`

0 commit comments

Comments
 (0)