Skip to content
This repository has been archived by the owner on Aug 11, 2022. It is now read-only.

Commit

Permalink
shrinkwrap: Stop churning ranges back to versions in requires
Browse files Browse the repository at this point in the history
Credit: @iarna
  • Loading branch information
iarna committed Apr 10, 2018
1 parent bd16485 commit fe867aa
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 11 deletions.
4 changes: 2 additions & 2 deletions lib/install/get-requested.js
Expand Up @@ -2,9 +2,9 @@
const npa = require('npm-package-arg')
const moduleName = require('../utils/module-name.js')

module.exports = function (child) {
module.exports = function (child, reqBy) {
if (!child.requiredBy.length) return
const reqBy = child.requiredBy[0]
if (!reqBy) reqBy = child.requiredBy[0]
const deps = reqBy.package.dependencies || {}
const devDeps = reqBy.package.devDependencies || {}
const name = moduleName(child)
Expand Down
20 changes: 11 additions & 9 deletions lib/shrinkwrap.js
Expand Up @@ -134,8 +134,8 @@ function shrinkwrapDeps (deps, top, tree, seen) {
if (child.requires.length) {
pkginfo.requires = {}
sortModules(child.requires).forEach((required) => {
var requested = required.package._requested || getRequested(required) || {}
pkginfo.requires[moduleName(required)] = childRequested(top, required, requested)
var requested = getRequested(required, child) || required.package._requested || {}
pkginfo.requires[moduleName(required)] = childRequested(top, child, required, requested)
})
}
if (child.children.length) {
Expand Down Expand Up @@ -163,13 +163,15 @@ function childVersion (top, child, req) {
}
}

function childRequested (top, child, req) {
if (req.type === 'directory' || req.type === 'file') {
return 'file:' + unixFormatPath(path.relative(top.path, child.package._resolved || req.fetchSpec))
} else if (!isRegistry(req) && !child.fromBundle) {
return child.package._resolved || req.saveSpec || req.rawSpec
} else if (req.saveSpec || req.rawSpec) {
return req.saveSpec || req.rawSpec
function childRequested (top, parent, child, requested) {
if (parent.swRequires && parent.swRequires[moduleName(child)] === child.package.version) {
return child.package.version
} else if (requested.type === 'directory' || requested.type === 'file') {
return 'file:' + unixFormatPath(path.relative(top.path, child.package._resolved || requested.fetchSpec))
} else if (!isRegistry(requested) && !child.fromBundle) {
return child.package._resolved || requested.saveSpec || requested.rawSpec
} else if (requested.saveSpec || requested.rawSpec) {
return requested.saveSpec || requested.rawSpec
} else if (child.package._from || (child.package._requested && child.package._requested.rawSpec)) {
return child.package._from.replace(/^@?[^@]+@/, '') || child.package._requested.rawSpec
} else {
Expand Down

0 comments on commit fe867aa

Please sign in to comment.