@everymundo/cleanrequire

Cleans nodejs require.cache for a given module and requires it again. Very useful for testing purposes.

Usage no npm install needed!

<script type="module">
  import everymundoCleanrequire from 'https://cdn.skypack.dev/@everymundo/cleanrequire';
</script>

README

@everymundo/cleanrequire

Cleans nodejs require.cache for a given module and requires it again. Very useful for testing purposes.

installation

npm install @everymundo/cleanrequire

usage

By using the regular require function from nodejs the result will be cached and the subsequent requests will not even touch the file again. The value will be returned from the cache. That is awesome for 99.9% of the cases.

But, sometimes, you want to require a file and you want nodejs to read it over and over again. For those cases you can use the cleanrequire library.

const cleanrequire = require('@everymundo/cleanrequire');

let libIwantToReloadEveryTime = cleanrequire('./lib/lib-i-want-to-reload-every-time');

libIwantToReloadEveryTime.doSomething();

libIwantToReloadEveryTime = cleanrequire('./lib/lib-i-want-to-reload-every-time');

libIwantToReloadEveryTime.doSomething();

Let's say you have a file name datetime with the following code

module.exports = new Date().toJSON();

By using the regular require function, it will only run that code once, no matter how many times you call it.

But when using cleanrequire function, it will run that code every single time you call it.

Check the test file for more details

Considerations

  • This library was created mainly to be used in test code, not production code.
  • It does not have the intention to be fast, in fact it is much slower than the regular require
  • It does not have the intention to replace the regular require.