diff --git a/lib/core/Project.js b/lib/core/Project.js index 3f4933a3..b897aaba 100644 --- a/lib/core/Project.js +++ b/lib/core/Project.js @@ -649,16 +649,21 @@ Project.prototype._walkTree = function (node, fn, onlyOnce) { }; Project.prototype._restoreNode = function (node, flattened, jsonKey) { - // Do not restore if already processed or if the node is - // missing or incompatible - if (node.dependencies || node.missing || node.incompatible) { + var deps; + + // Do not restore if the node is missing or incompatible + if (node.missing || node.incompatible) { return; } - node.dependencies = {}; + node.dependencies = node.dependencies || {}; node.dependants = node.dependants || {}; - mout.object.forOwn(node.pkgMeta[jsonKey], function (value, key) { + deps = mout.object.filter(node.pkgMeta[jsonKey], function (value) { + return !node.dependencies[value]; + }); + + mout.object.forOwn(deps, function (value, key) { var local = flattened[key]; var json = endpointParser.json2decomposed(key, value); var restored;