Replacement for node.js require that 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 requir
npm install re-require-modulere-require-module
=========
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.
* 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`.
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.
`npm install re-require-module --save`
`
// 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!');
}
- 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.