jumpseat
v2.2.0
Published
Hot restart a node server, automatically.
Downloads
5
Readme
jumpseat
Hot restart a node server, automatically.
Jumpseat is a companion to node servers, either express or vanilla which will invalidate your require cache and reload the server without killing the node process.
This means that any debugger sessions are left in tact, making development faster, and easier.
Table of Contents
Background
Node.js will cache required modules meaning that a restart is generally required to load new changes. Tools such as Nodemon make this easier by restarting your node process each time a change is made to a source file.
Jumpseat takes a more nuanced approach. Instead of restarting the node process, killing any existing debugger sessions, the require cache is cleared and the http server is restarted. This decreases the time for iterative development since the server is listening again more quickly and there is no need to re-attach debuggers.
When you launch node -r jumpseat index.js
we create a watch on index.js and the other files in its folder. If any of those files are modified, node's require cache is purged ( ignoring node_modules
) and the server is then restarted.
Install
npm install jumpseat --save-development
Usage
Simply preload the jumpseat
module when running your server.
node -r jumpseat index.js
Your server must be exported as a named export ( since es modules and commonjs differ on default export, but agree on named exports ) with the name server
.
// index.js
const express = require('express');
const app = express();
app.use('/', (req, res) => {
res.sendStatus(200)
});
const server = app.listen(8080);
// Export your server as a named export so we can restart it
module.exports.server = server;
Contribute
Please refer to the CONTRIBUTING file for information about how to get involved. We welcome issues, questions, and pull requests. Pull Requests are welcome.
Maintainers
Suneil Nyamathi: [email protected]
License
This project is licensed under the terms of the MIT open source license. Please refer to LICENSE for the full terms.