diff options
Diffstat (limited to 'deps/npm/lib/install/is-only-optional.js')
-rw-r--r-- | deps/npm/lib/install/is-only-optional.js | 5 |
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 } |