From c2866d2393cce03486d7dfaedb0890c2166f9017 Mon Sep 17 00:00:00 2001 From: isaacs Date: Tue, 27 Jul 2010 00:19:49 -0700 Subject: [PATCH] Make activate faster by avoiding extra work. --- lib/activate.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lib/activate.js b/lib/activate.js index 955d8a60839..610b9b027e3 100644 --- a/lib/activate.js +++ b/lib/activate.js @@ -71,8 +71,18 @@ function activate_ (arg, cb) { chain ( [lifecycle, data, "preactivate"] , [link, from, to] - , [shimIfExists, fromMain, toMain] - , [linkIfExists, fromLib, toLib] + , function (cb) { + fs.stat(toMain, function (er) { + if (!er) return cb() + shimIfExists(fromMain, toMain, cb) + }) + } + , function (cb) { + fs.stat(toLib, function (er) { + if (!er) return cb() + linkIfExists(fromLib, toLib, cb) + }) + } , [linkBins, data] , [lifecycle, data, "activate"] , [lifecycle, data, "postactivate"] @@ -89,6 +99,11 @@ function linkBins (pkg, cb) { chain(Object.keys(pkg.bin).map(function (i) { var to = path.join(binroot, i) , from = to+"-"+pkg.version - return [link, from, to] + return function (cb) { + fs.stat(to, function (er) { + if (!er) cb() + linkIfExists(from, to, cb) + }) + } }).concat(cb)) }