diff options
Diffstat (limited to 'utils/lib/packages.js')
-rwxr-xr-x | utils/lib/packages.js | 28 |
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) + ); }; |