jumpseat

Hot restart a node server, automatically.

Usage no npm install needed!

<script type="module">
  import jumpseat from 'https://cdn.skypack.dev/jumpseat';
</script>

README

jumpseat Build Status npm

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: suneil.nyamathi@verizonmedia.com

License

This project is licensed under the terms of the MIT open source license. Please refer to LICENSE for the full terms.