diff options
Diffstat (limited to 'deps/npm/lib/install/copy-tree.js')
-rw-r--r-- | deps/npm/lib/install/copy-tree.js | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/deps/npm/lib/install/copy-tree.js b/deps/npm/lib/install/copy-tree.js index 2bf7064f33..a5b558cf59 100644 --- a/deps/npm/lib/install/copy-tree.js +++ b/deps/npm/lib/install/copy-tree.js @@ -1,26 +1,27 @@ 'use strict' var createNode = require('./node.js').create -module.exports = function (tree) { - return copyTree(tree, {}) +module.exports = function (tree, filter) { + return copyTree(tree, {}, filter) } -function copyTree (tree, cache) { +function copyTree (tree, cache, filter) { + if (filter && !filter(tree)) { return null } if (cache[tree.path]) { return cache[tree.path] } var newTree = cache[tree.path] = createNode(Object.assign({}, tree)) - copyModuleList(newTree, 'children', cache) + copyModuleList(newTree, 'children', cache, filter) newTree.children.forEach(function (child) { child.parent = newTree }) - copyModuleList(newTree, 'requires', cache) - copyModuleList(newTree, 'requiredBy', cache) + copyModuleList(newTree, 'requires', cache, filter) + copyModuleList(newTree, 'requiredBy', cache, filter) return newTree } -function copyModuleList (tree, key, cache) { +function copyModuleList (tree, key, cache, filter) { var newList = [] if (tree[key]) { tree[key].forEach(function (child) { - const copy = copyTree(child, cache) + const copy = copyTree(child, cache, filter) if (copy) { newList.push(copy) } |