require.js: Access all loaded modules

Michael picture Michael · Aug 1, 2012 · Viewed 19.1k times · Source

Is there any way to access all loaded modules of require.js?

Background:
I want to automatically call an init() function of my javascript-modules after all of them are loaded, see require.js + backbone.js: How to structure modules that have an initialize function? Without require.js I looped over my own module-storage and called each init() function.
I now want to do this with require.js. I'm aware that calling a my_custom_init_function_favoritecolor_petname_love123 of every loaded module (including external libraries) is dangerous. I hope that this will cause less trouble than manually keeping a list of all modules (and the requirements of these modules) up-to-date. Forgetting one module init() is much more likely than a third-party library having my custom function name (though the latter is probably harder to debug).

Or does anyone have a better idea of how to accomplish that?

Answer

AlexStack picture AlexStack · Sep 27, 2013

Yes, require.s.contexts._.defined is an object which its keys are the module names and the values include the value returned from that module.

require.s.contexts._.defined includes all the modules (either define() or require() such as the Javascript file that is the starting point of the program and is indicated using data-main for RequireJS).