modulejs icon indicating copy to clipboard operation
modulejs copied to clipboard

Implementing a method for unregistering modules

Open tomasperezv opened this issue 9 years ago • 1 comments

Goal

This PR adds a new method to the modulejs interface in order to be able to unregister modules.

modulejs.define('a', function () {});
const module = modulejs.require('a'); // => returns the 'a' module

modulejs.unregister('a');
modulejs.require('a'); // The module is not defined now

Why

Unregistering modules can be useful in some specific scenarios for instance for testing. We could, of course, modify directly the _private.definitions variable, as explained in #2. However it's a bit cleaner if we can avoid accessing to the private values externally. Also this way we can include some logic in order to verify if the module is defined, etc.

How

I've added the unregister method, expose it, and implemented corresponding unit tests. I've also run the different check scripts.

I've tried to follow the coding style defined in the library, I'm of course very open to feedback and comments.

Note: I haven't added the built distribution files since I wanted to hear your feedback first. If you agree with this PR I can do push them and increase the version number in the package.json, or if you prefer you can do it.

tomasperezv avatar May 18 '16 17:05 tomasperezv

Hi @lrsjng, I've updated this PR's code in order to be compatible with your latest changes. Would be great to get some feedback and/or discuss implementation details in case there is something you would like me to change in order to be able to merge this PR.

Thanks!

tomasperezv avatar Oct 22 '16 18:10 tomasperezv