Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/utils/lib/packages.js
diff options
context:
space:
mode:
Diffstat (limited to 'utils/lib/packages.js')
-rwxr-xr-xutils/lib/packages.js28
1 files changed, 22 insertions, 6 deletions
diff --git a/utils/lib/packages.js b/utils/lib/packages.js
index 2a18939..976f991 100755
--- a/utils/lib/packages.js
+++ b/utils/lib/packages.js
@@ -55,6 +55,16 @@ exports.load = function (packagePrefixes) {
// platform-specific synthesis
if (packagesPlatform)
packagesPlatform.synthesize(analysis);
+
+ // preload modules
+ analysis.preloadModules.forEach(function(id) {
+ system.log.debug("Preloading module: "+id);
+ try {
+ require(id);
+ } catch (e) {
+ system.log.warn("Error preloading module: "+e);
+ }
+ });
// record results
exports.catalog = catalog;
@@ -271,7 +281,8 @@ var _topo = function _topo(graph, name, visited) {
based on the given sorted package array.
*/
exports.analyze = function analyze(analysis, catalog) {
- var jsPaths = analysis.libPaths = []
+ analysis.libPaths = [];
+ analysis.preloadModules = [];
catalog.forEach(function (packageData) {
// libraries
@@ -296,7 +307,11 @@ exports.analyze = function analyze(analysis, catalog) {
packageData.lib[i] = packageData.directory.resolve(packageData.lib[i]);
}
- jsPaths.unshift.apply(jsPaths, packageData.lib);
+ analysis.libPaths.unshift.apply(analysis.libPaths, packageData.lib);
+
+ // add any preload librarys to analysis
+ if (packageData.preload)
+ analysis.preloadModules.unshift.apply(analysis.preloadModules, packageData.preload);
});
};
@@ -312,9 +327,10 @@ exports.synthesize = function synthesize(analysis) {
*/
exports.addJsPaths = function addJsPaths(jsPaths) {
// add package paths to the loader
- require.paths.splice.apply(
- require.paths,
- [0, require.paths.length].concat(jsPaths)
- );
+ if (require.paths)
+ require.paths.splice.apply(
+ require.paths,
+ [0, require.paths.length].concat(jsPaths)
+ );
};