You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2013/09/13 01:35:52 UTC
[11/16] git commit: [CB-4793] Lazily require modules in some places.
[CB-4793] Lazily require modules in some places.
With the related change to plugman:
cordova plugin ls: 700ms -> 80ms
cordova create: 800ms -> 450ms
Project: http://git-wip-us.apache.org/repos/asf/cordova-cli/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-cli/commit/aba4599f
Tree: http://git-wip-us.apache.org/repos/asf/cordova-cli/tree/aba4599f
Diff: http://git-wip-us.apache.org/repos/asf/cordova-cli/diff/aba4599f
Branch: refs/heads/ffos
Commit: aba4599f61449f3c506bfbd7e80f326029314dc4
Parents: cc30eac
Author: Andrew Grieve <ag...@chromium.org>
Authored: Wed Sep 11 14:56:31 2013 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Wed Sep 11 14:56:31 2013 -0400
----------------------------------------------------------------------
bin/cordova | 22 +++++++++++++++++++++-
cordova.js | 44 ++++++++++++++++++++------------------------
platforms.js | 18 +++++++++++++-----
src/cli.js | 10 +++++-----
src/plugin.js | 21 +++++++++++----------
src/util.js | 16 +++++++++++-----
6 files changed, 81 insertions(+), 50 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/aba4599f/bin/cordova
----------------------------------------------------------------------
diff --git a/bin/cordova b/bin/cordova
index 4b0c4de..3a54c19 100755
--- a/bin/cordova
+++ b/bin/cordova
@@ -1,4 +1,24 @@
#!/usr/bin/env node
-var CLI = require('../src/cli');
+// Set this to 1 to enable timestamp collection via addTs().
+if (0) {
+ var ts = [];
+ addTs = function(name) {
+ ts.push([name, new Date]);
+ }
+ process.on('exit', function() {
+ for (var i = 0; i < ts.length - 1; ++i) {
+ var e1 = ts[i];
+ var e2 = ts[i+1];
+ console.log(e1[0] + ' -> ' + e2[0] + ' = ' + (e2[1] - e1[1]));
+ }
+ console.log('total: ' + (ts[ts.length-1][1] - ts[0][1]));
+ });
+} else {
+ addTs = function() {};
+}
+
+addTs('start');
+var CLI = require('../src/cli');
new CLI(process.argv);
+addTs('end');
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/aba4599f/cordova.js
----------------------------------------------------------------------
diff --git a/cordova.js b/cordova.js
index 5e5eb87..277c12a 100644
--- a/cordova.js
+++ b/cordova.js
@@ -16,15 +16,8 @@
specific language governing permissions and limitations
under the License.
*/
-var cordova_events = require('./src/events'),
- prepare = require('./src/prepare'),
- platform = require('./src/platform'),
- run = require('./src/run'),
- hooker = require('./src/hooker'),
- util = require('./src/util'),
- path = require('path'),
- fs = require('fs'),
- compile = require('./src/compile');
+var cordova_events = require('./src/events');
+var addModuleProperty = require('./src/util').addModuleProperty;
var off = function() {
cordova_events.removeListener.apply(cordova_events, arguments);
@@ -34,20 +27,7 @@ var emit = function() {
cordova_events.emit.apply(cordova_events, arguments);
};
-module.exports = {
- help: require('./src/help'),
- config: require('./src/config'),
- create: require('./src/create'),
- platform: platform,
- platforms: platform,
- prepare: prepare,
- compile: compile,
- run: run,
- ripple: require('./src/ripple'),
- emulate: require('./src/emulate'),
- plugin: require('./src/plugin'),
- plugins: require('./src/plugin'),
- serve: require('./src/serve'),
+exports = module.exports = {
on: function() {
cordova_events.on.apply(cordova_events, arguments);
},
@@ -58,5 +38,21 @@ module.exports = {
},
emit: emit,
trigger: emit,
- build: require('./src/build')
};
+
+addModuleProperty(module, 'prepare', './src/prepare');
+addModuleProperty(module, 'build', './src/build');
+addModuleProperty(module, 'help', './src/help');
+addModuleProperty(module, 'config', './src/config');
+addModuleProperty(module, 'create', './src/create');
+addModuleProperty(module, 'ripple', './src/ripple');
+addModuleProperty(module, 'emulate', './src/emulate');
+addModuleProperty(module, 'plugin', './src/plugin');
+addModuleProperty(module, 'plugins', './src/plugin');
+addModuleProperty(module, 'serve', './src/serve');
+addModuleProperty(module, 'platform', './src/platform');
+addModuleProperty(module, 'platforms', './src/platform');
+addModuleProperty(module, 'compile', './src/compile');
+addModuleProperty(module, 'run', './src/run');
+
+
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/aba4599f/platforms.js
----------------------------------------------------------------------
diff --git a/platforms.js b/platforms.js
index 74d72ec..40d0a6b 100644
--- a/platforms.js
+++ b/platforms.js
@@ -19,27 +19,27 @@
module.exports = {
'ios' : {
- parser : require('./src/metadata/ios_parser'),
+ parser : './src/metadata/ios_parser',
url : 'https://git-wip-us.apache.org/repos/asf?p=cordova-ios.git',
version: '3.0.0'
},
'android' : {
- parser : require('./src/metadata/android_parser'),
+ parser : './src/metadata/android_parser',
url : 'https://git-wip-us.apache.org/repos/asf?p=cordova-android.git',
version: '3.0.0'
},
'wp7' : {
- parser : require('./src/metadata/wp7_parser'),
+ parser : './src/metadata/wp7_parser',
url : 'https://git-wip-us.apache.org/repos/asf?p=cordova-wp8.git',
version: '3.0.0'
},
'wp8' : {
- parser : require('./src/metadata/wp8_parser'),
+ parser : './src/metadata/wp8_parser',
url : 'https://git-wip-us.apache.org/repos/asf?p=cordova-wp8.git',
version: '3.0.0'
},
blackberry10 : {
- parser : require('./src/metadata/blackberry10_parser'),
+ parser : './src/metadata/blackberry10_parser',
url : 'https://git-wip-us.apache.org/repos/asf?p=cordova-blackberry.git',
version: '3.0.0'
},
@@ -48,3 +48,11 @@ module.exports = {
version: '3.0.0'
}
};
+
+var addModuleProperty = require('./src/util').addModuleProperty;
+Object.keys(module.exports).forEach(function(key) {
+ var obj = module.exports[key];
+ if (obj.parser) {
+ addModuleProperty(module, 'parser', obj.parser, obj);
+ }
+});
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/aba4599f/src/cli.js
----------------------------------------------------------------------
diff --git a/src/cli.js b/src/cli.js
index 24c9d7d..0e7ea76 100755
--- a/src/cli.js
+++ b/src/cli.js
@@ -17,12 +17,10 @@
under the License.
*/
-var optimist = require('optimist'),
- cordova = require('../cordova'),
- plugman = require('plugman'),
- platforms = require("../platforms");
-
module.exports = function CLI(inputArgs) {
+ var optimist = require('optimist'),
+ cordova = require('../cordova');
+
args = optimist(inputArgs)
.boolean('d')
.boolean('verbose')
@@ -56,6 +54,7 @@ module.exports = function CLI(inputArgs) {
if (opts.verbose) {
cordova.on('log', console.log);
cordova.on('warn', console.warn);
+ var plugman = require('plugman');
plugman.on('log', console.log);
plugman.on('warn', console.warn);
//Remove the corresponding token
@@ -77,6 +76,7 @@ module.exports = function CLI(inputArgs) {
if (cordova.hasOwnProperty(cmd)) {
if (cmd == 'emulate' || cmd == 'build' || cmd == 'prepare' || cmd == 'compile' || cmd == 'run') {
// Filter all non-platforms into options
+ var platforms = require("../platforms");
tokens.forEach(function(option, index) {
if (platforms.hasOwnProperty(option)) {
opts.platforms.push(option);
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/aba4599f/src/plugin.js
----------------------------------------------------------------------
diff --git a/src/plugin.js b/src/plugin.js
index 8ea1b3e..2c5cd33 100644
--- a/src/plugin.js
+++ b/src/plugin.js
@@ -16,18 +16,14 @@
specific language governing permissions and limitations
under the License.
*/
-var cordova_util = require('./util'),
- util = require('util'),
- fs = require('fs'),
- path = require('path'),
- shell = require('shelljs'),
- platforms = require('../platforms'),
- n = require('ncallbacks'),
- hooker = require('./hooker'),
- plugman = require('plugman'),
- events = require('./events');
module.exports = function plugin(command, targets, callback) {
+ var cordova_util = require('./util'),
+ path = require('path'),
+ n = require('ncallbacks'),
+ hooker = require('./hooker'),
+ events = require('./events');
+
var projectRoot = cordova_util.isCordova(process.cwd()),
err;
@@ -115,6 +111,7 @@ module.exports = function plugin(command, targets, callback) {
// Fetch the plugin first.
events.emit('log', 'Calling plugman.fetch on plugin "' + target + '"');
+ var plugman = require('plugman');
plugman.fetch(target, pluginsDir, {}, function(err, dir) {
if (err) {
err = new Error('Error fetching plugin: ' + err);
@@ -128,6 +125,7 @@ module.exports = function plugin(command, targets, callback) {
return;
}
+ var platforms = require('../platforms');
var platform = platformList[platformIndex],
platformRoot = path.join(projectRoot, 'platforms', platform),
parser = new platforms[platform].parser(platformRoot),
@@ -194,8 +192,10 @@ module.exports = function plugin(command, targets, callback) {
// If this is a web-only or dependency-only plugin, then
// there may be nothing to do here except remove the
// reference from the platform's plugin config JSON.
+ var plugman = require('plugman');
platformList.forEach(function(platform) {
var platformRoot = path.join(projectRoot, 'platforms', platform);
+ var platforms = require('../platforms');
var parser = new platforms[platform].parser(platformRoot);
events.emit('log', 'Calling plugman.uninstall on plugin "' + target + '" for platform "' + platform + '"');
plugman.uninstall.uninstallPlatform(platform, platformRoot, target, path.join(projectRoot, 'plugins'), { www_dir: parser.staging_dir() });
@@ -217,6 +217,7 @@ module.exports = function plugin(command, targets, callback) {
if(callback) callback(err);
else throw err;
} else {
+ var plugman = require('plugman');
plugman.search(opts.plugins, function(err, plugins) {
if(err) return console.log(err);
for(var plugin in plugins) {
http://git-wip-us.apache.org/repos/asf/cordova-cli/blob/aba4599f/src/util.js
----------------------------------------------------------------------
diff --git a/src/util.js b/src/util.js
index 858d20b..53eb8dd 100644
--- a/src/util.js
+++ b/src/util.js
@@ -18,8 +18,6 @@
*/
var fs = require('fs'),
path = require('path'),
- config_parser = require('./config_parser'),
- plugin_parser = require('./plugin_parser'),
shell = require('shelljs');
// Global configuration paths
@@ -28,7 +26,7 @@ var global_config_path = path.join(HOME, '.cordova');
var lib_path = path.join(global_config_path, 'lib');
shell.mkdir('-p', lib_path);
-module.exports = {
+exports = module.exports = {
globalConfig:global_config_path,
libDirectory:lib_path,
// Runs up the directory chain looking for a .cordova directory.
@@ -52,8 +50,6 @@ module.exports = {
}
} else return false;
},
- config_parser:config_parser,
- plugin_parser:plugin_parser,
// Recursively deletes .svn folders from a target path
deleteSvnFolders:function(dir) {
var contents = fs.readdirSync(dir);
@@ -137,3 +133,13 @@ module.exports = {
return result;
}
};
+
+function addModuleProperty(module, symbol, modulePath, opt_obj) {
+ Object.defineProperty(opt_obj || module.exports, symbol, {
+ get : function() { return module.require(modulePath); }});
+}
+
+addModuleProperty(module, 'config_parser', './config_parser');
+addModuleProperty(module, 'plugin_parser', './plugin_parser');
+
+exports.addModuleProperty = addModuleProperty;