summaryrefslogtreecommitdiff
path: root/deps/npm/lib/install/is-only-optional.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/install/is-only-optional.js')
-rw-r--r--deps/npm/lib/install/is-only-optional.js5
1 files changed, 3 insertions, 2 deletions
diff --git a/deps/npm/lib/install/is-only-optional.js b/deps/npm/lib/install/is-only-optional.js
index 81e227bae7..ea27eadcfa 100644
--- a/deps/npm/lib/install/is-only-optional.js
+++ b/deps/npm/lib/install/is-only-optional.js
@@ -11,11 +11,12 @@ function isOptional (node, seen) {
if (seen.has(node) || node.requiredBy.length === 0) {
return false
}
- seen = new Set(seen)
seen.add(node)
const swOptional = node.fromShrinkwrap && node.package._optional
- return node.requiredBy.every(function (req) {
+ const result = node.requiredBy.every(function (req) {
if (req.fakeChild && swOptional) return true
return isOptDep(req, moduleName(node)) || isOptional(req, seen)
})
+ seen.delete(node)
+ return result
}