Faster, route-centric development for Node.js apps with built-in Hot Module Replacement.
As your project grows, working on a large or monolithic Node.js app gets slower:
require
tree grows so large it can take several seconds to start the server.404
screens with the option to create the missing route.500
screens, so you spend less time in the terminal.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
The routes
folder is similar to Old-Time™ HTML & PHP, where
folders mirror the URL structure, followed by an index.js
file:
routes/
page/[id]/index.js
Has access to req.params.id
for /page/123.
contact-us/
index.get.js
index.post.js
posts/index.*.js
Responds to both GET
& POST
for /posts/*.
index.js
Responds to both GET
& POST
for /.
Route handlers can be any of the following:
Functional middleware:
module.exports = (req, res) => {
res.send("Howdy there!")
}
Express apps:
const express = require("express")
module.exports = express().get("/", (req, res) => {
res.send(`Howdy from ${req.path}!`)
})
A yarn workspace package:
module.exports = require("my-package-name")
A package.json
path:
module.exports = require.resolve("my-app/package.json")
These are considered stand-alone apps that will be ran via yarn dev
or yarn 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.
See CONTRIBUTING.md.