Skip to content

Commit 3f2c894

Browse files
committed
feat: omit resolved from registry dependencies
Start npm/rfcs#486. This implements `$disable-write-resolves` without creating an option. Next I'll figure out how to plumb a npm config option thru to shrinkwrap.
1 parent ddeb2d9 commit 3f2c894

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

lib/node.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,14 @@ class Node {
508508
return this === this.root || this === this.root.target
509509
}
510510

511+
get isRegistryDependency () {
512+
if (this.edgesIn.size === 0) return false
513+
for (const edge of this.edgesIn) {
514+
if (!npa(edge.spec).registry) return false
515+
}
516+
return true
517+
}
518+
511519
* ancestry () {
512520
for (let anc = this; anc; anc = anc.resolveParent) {
513521
yield anc

lib/shrinkwrap.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,7 +284,7 @@ class Shrinkwrap {
284284
})
285285

286286
const resolved = consistentResolve(node.resolved, node.path, path, true)
287-
if (resolved) {
287+
if (resolved && !node.isRegistryDependency) {
288288
meta.resolved = resolved
289289
}
290290

@@ -953,6 +953,7 @@ class Shrinkwrap {
953953
// git, file, dir, or remote, then the resolved value is necessary.
954954
if (node.resolved &&
955955
!node.isLink &&
956+
!node.isRegistryDependency &&
956957
rSpec.type !== 'git' &&
957958
rSpec.type !== 'file' &&
958959
rSpec.type !== 'directory' &&

0 commit comments

Comments
 (0)