How to use UMD in browser without any additional dependencies

Ok, so you are running in an environment without RequireJS, CommonJS, SystemJS, etc.

The key line is factory((global.mymodule = global.mymodule || {})) this does a few things:

  1. If global.mymodule truthy, then it is equivalent to

    global.mymodule = global.mymodule // A noop.
    factory(global.mymodule)
    
  2. Otherwise it is equivalent to:

    global.mymodule = {}
    factory(global.mymodule)
    

Inside the factory: Your factory you should export what you want to export from your module by assigning to exports. So you’d export myFunction by doing exports.myFunction = myFunction.

Outside the factory: Outside, the exported values will be on mymodule which was exported to the global space. When you want to use myFunction, for instance, you do mymodule.myFunction(...).

In case that’s not clear. The factory in your code is the function that starts with function (exports) {, where you’ve correctly put myFunction.

Leave a Comment