diff --git a/src/plugins/load.js b/src/plugins/load.js index 554df14030..48bbdb0390 100644 --- a/src/plugins/load.js +++ b/src/plugins/load.js @@ -171,13 +171,18 @@ module.exports = function(Plugins) { }; function mapClientModules(pluginData, callback) { + if (!pluginData.hasOwnProperty('modules')) { + return callback(); + } + + var modules = {}; + if (Array.isArray(pluginData.modules)) { if (global.env === 'development') { winston.verbose('[plugins] Found ' + pluginData.modules.length + ' AMD-style module(s) for plugin ' + pluginData.id); } - var modules = {}, - strip = pluginData.hasOwnProperty('modulesStrip') ? parseInt(pluginData.modulesStrip, 10) : 0; + var strip = pluginData.hasOwnProperty('modulesStrip') ? parseInt(pluginData.modulesStrip, 10) : 0; pluginData.modules.forEach(function(file) { if (strip) { @@ -188,7 +193,19 @@ module.exports = function(Plugins) { }); meta.js.scripts.modules = _.extend(meta.js.scripts.modules, modules); - } /* one could conceivably add an else..if here for plugins to pass modules in as an Object */ + } else { + var keys = Object.keys(pluginData.modules); + + if (global.env === 'development') { + winston.verbose('[plugins] Found ' + keys.length + ' AMD-style module(s) for plugin ' + pluginData.id); + } + + for (var name in pluginData.modules) { + modules[name] = path.join('./node_modules/', pluginData.id, pluginData.modules[name]); + } + + meta.js.scripts.modules = _.extend(meta.js.scripts.modules, modules); + } callback(); };