re-require-module

1.0.2 • Public • Published

re-require-module

What is it?

Drop-in replacement for node.js require that always reads the required module again from disk. It actually automatically uncaches it before requiring it again for you. This allows changes to become live without restarting node. It is like a simple hot require. It is also similar to decache except it also does the require again part for you.

Why and when would I use this?

  • Are you tired of having to restart your node server everytime you make a change to your server code?
  • Is code (such as request handlers) in your modules usually pure functions?

If so, then re-require-module is an easy, simple and lightweight way for you to achieve 'hot' style code reloading.

The way re-require-module works is it just uncaches the module you give it, before returning what you'd usually get out of require. This way whatever change you make is always loaded at the point in code that you reRequire it.

When using it, the key thing to make it work is that, you must put the reRequire call somewhere where it will be called each time a request is made.

Also note that if your module has state inside, the state will be wiped out on reRequire.

Production Ready

You can actually leave your reRequire call in production. re-require-module detects that if in production mode, it will not reload code and will hit the disk only on the first reRequire call.

Install

npm install re-require-module --save

Example Usage

// app.js
var http = require('http');
var reRequire = require('re-require-module').reRequire;

var server = http.createServer(function(req, res) {
  // put reRequire in here so that a reRequire is made on each request
    reRequire('./handler').handleRequest(req, res);
});

server.listen(8080);

// handler.js
module.exports.handleRequest = function(req, res){
    res.end('Try editing this and refresh. No need to restart node!');
}

Trying out the example

  • Run the example:
node example/app
  • Open your browser to http://localhost:8080.
  • Try editing the text in handler.js
  • Refresh and see the changes immediately. No need to restart node.

Package Sidebar

Install

npm i re-require-module

Weekly Downloads

8

Version

1.0.2

License

MIT

Last publish

Collaborators

  • chanon