From 1abdee681af64d7a9fd085f0b42f6e893576b130 Mon Sep 17 00:00:00 2001 From: isaacs Date: Thu, 10 Mar 2011 15:29:42 -0800 Subject: Prune would get confused by link packages --- lib/prune.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'lib/prune.js') diff --git a/lib/prune.js b/lib/prune.js index d2aae8b4a..8217c3a1d 100644 --- a/lib/prune.js +++ b/lib/prune.js @@ -15,18 +15,22 @@ function prune (args, cb) { } function prune_ (args, data, cb) { - npm.commands.unbuild(prunables(args, data), cb) + npm.commands.unbuild(prunables(args, data, []), cb) } -function prunables (args, data, cb) { +function prunables (args, data, seen) { var deps = data.dependencies || {} return Object.keys(deps).map(function (d) { - if (typeof deps[d] !== "object") return null + if (typeof deps[d] !== "object" + || seen.indexOf(deps[d]) !== -1) return null + seen.push(deps[d]) if (deps[d].extraneous && (args.length === 0 || args.indexOf(d) !== -1)) { - return deps[d].path + var extra = deps[d] + delete deps[d] + return extra.path } - return prunables(args, deps[d]) + return prunables(args, deps[d], seen) }).filter(function (d) { return d !== null }) .reduce(function FLAT (l, r) { return l.concat(Array.isArray(r) ? r.reduce(FLAT,[]) : r) -- cgit v1.2.3