From 3cac15d23ec7276ef60bf9ffba465f2e71d2ccf3 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 21 Mar 2013 14:50:23 -0700 Subject: [PATCH] Skip slow npm-update step for warehouse packages, which should be write-once. --- tools/bundler.js | 12 ++++++++++-- tools/packages.js | 5 +++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/tools/bundler.js b/tools/bundler.js index d9a09a2b84..3e2074940b 100644 --- a/tools/bundler.js +++ b/tools/bundler.js @@ -406,7 +406,11 @@ _.extend(Bundle.prototype, { // what the current code will do) if (pkg.npmDependencies) { - pkg.installNpmDependencies(); + // If the package isn't in the warehouse, maybe update the NPM + // dependencies. (Warehouse packages shouldn't change after they're + // installed, so we skip this slow step.) + if (!pkg.inWarehouse) + pkg.installNpmDependencies(); self.bundleNodeModules(pkg); } @@ -432,7 +436,11 @@ _.extend(Bundle.prototype, { // tests. one example is stream-buffers as used in the email // package if (pkg.npmDependencies) { - pkg.installNpmDependencies(); + // If the package isn't in the warehouse, maybe update the NPM + // dependencies. (Warehouse packages shouldn't change after they're + // installed, so we skip this slow step.) + if (!pkg.inWarehouse) + pkg.installNpmDependencies(); self.bundleNodeModules(pkg); } diff --git a/tools/packages.js b/tools/packages.js index f109e454a0..4b9ebd8a1c 100644 --- a/tools/packages.js +++ b/tools/packages.js @@ -48,6 +48,10 @@ var Package = function () { // registered source file handlers self.extensions = {}; + // Are we in the warehouse? (Set to true by initFromWarehouse.) Used to skip + // npm re-scans. + self.inWarehouse = false; + // functions that can be called when the package is scanned -- // visible as `Package` when package.js is executed self.packageFacade = { @@ -184,6 +188,7 @@ _.extend(Package.prototype, { self.initFromPackageDir( name, path.join(warehouse.getWarehouseDir(), 'packages', name, version)); + self.inWarehouse = true; }, init_from_app_dir: function (app_dir, ignore_files) {