Faster, route-centric development for Node.js apps with built-in Hot Module Replacement.
Rationale
As your project grows, working on a large or monolithic Node.js app gets slower:
- Working on part of the app means running the entire app.
- The
require
tree grows so large it can take several seconds to start the server. - Restarting the server on every change impedes development.
- Middleware for projects like Next.js & Storybook are expensive to restart with each change.
- Tools like concurrently, nodemon, & piping still run the entire app.
- You shouldn't waste time in the terminal hitting Ctrl-C and restarting.
Features
- Fast startup.
- Hot Module Replacement built-in.
- Run only the parts of your app that's requested.
- Supports yarn workspaces.
- Pretty
404
screens with the option to create the missing route. - Pretty
500
screens, so you spend less time in the terminal. - Iterative adoption, so it's easy to get started.
Quick Started
-
Install
yarn add polydev --dev -
Run
polydev
yarn run polydev --open
For customizing the node
runtime, you can use NODE_OPTIONS
.
For example, TypeScript can be enabled via ts-node:
polydev --require ts-node/register# Or NODE_OPTIONS="--require ts-node/register" polydev
routes
Defining The routes
folder is similar to Old-Time™ HTML & PHP, where
folders mirror the URL structure, followed by an index.js
file:
-
routes/
Route Handlers
Route handlers can be any of the following:
-
Functional middleware:
module {res} -
Express apps:
const express =moduleexports = -
A yarn workspace package:
moduleexports = -
A
package.json
path:moduleexports = requireThese are considered stand-alone apps that will be ran via
yarn dev
oryarn start
(whichever exists) for development only.This is good for when you want to have a separate API server open on
process.env.PORT
that's not part of your application.
Contributing
See CONTRIBUTING.md.