svr v2.3.28
HTTP development server done right.
Features
- Smart reload, just reloading modified files to do development fast.
- Reload on demand, after type
rson your terminal. - Pretty Errors, making unexpected errors easy to read.
- Port Selection, supporting detection for already in use ports.
- Clipboard Support, copying the local address in your clipboard.
- Debug in Your Network, exposing the process in your local network.
It's similar micro-dev, but compatible with any function that exposes req, res interface (micro, express, koa, hapi, fastify, etc).
Installation
$ npm install svr --saveUsage
Defining entry point
Create a file and export a function that accepts the standard http.IncomingMessage and http.ServerResponse objects, that means, the exported function should be receive req, res:
const express = require('express')
const { Router } = express
const router = Router()
// define middlewares
router.use(require('helmet')())
router.use(require('compression')())
router.use(require('cors')())
// define routes
router.get('/', (req, res) => res.status(204).send())
router.get('/robots.txt', (req, res) => res.status(204).send())
router.get('/favicon.txt', (req, res) => res.status(204).send())
// expose router
module.exports = routerAfter that, just call svr:
$ svrsvr is assuming you have a main file declared in your package.json in the project directory. Also, you can provide it as first argument:
$ svr index.jsWe recommend setup svr as npm script:
{
"scripts": {
"dev": "svr"
}
}Now, running npm run dev it will be start your HRM development server:
$ npm start
┌───────────────────────────────────────────────────┐
│ │
│ my-express-api is running! │
│ │
│ • Local: http://localhost:3000 │
│ • On Your Network: http://192.168.1.106:3000 │
│ │
└───────────────────────────────────────────────────┘You can type svr --help to see all the options.
Smart Reload
When a file is modified in the project directory, svr will reload just the modified file:
┌───────────────────────────────────────────────────┐
│ │
│ my-express-api is running! │
│ │
│ • Local: http://localhost:3000 │
│ • On Your Network: http://192.168.1.106:3000 │
│ │
└───────────────────────────────────────────────────┘
ℹ 18:32:42 modified index.jsAlso, svr takes into consideration files that can be ignored:
- Well known files to ignore, like
node_modules,.git, etc. .gitignoredeclarations.ignoredfield in yourpackage.json.
If you need to add a specific file to ignore, use i or --ignore flag:
$ svr -i .cache -i publicAlso, you can use -w or --watch to add more file path to be listened. You can declare:
- Relative or absolute paths.
- Glob patterns.
Reload on demand
In any moment you can refresh the process typing rs in the terminal window where svr is running:
┌───────────────────────────────────────────────────┐
│ │
│ my-express-api is running! │
│ │
│ • Local: http://localhost:3000 │
│ • On Your Network: http://192.168.1.106:3000 │
│ │
└───────────────────────────────────────────────────┘
ℹ 18:32:42 modified index.js
rs
ℹ 18:34:07 restart index.jsDon't use on production
svr is oriented just for development scenarios, not for production.
Under production, simply create the server you need based on your necessities, for example, let's create a bin/server as production server:
#!/usr/bin/env node
'use strict'
const express = require('express')
const app = express()
require('./index')(app, express)
const port = process.env.PORT || process.env.port || 3000
const { name } = require('../package.json')
app.listen(port, function () {
console.log(`${name} is running at http://localhost:${port}`)
})You can declare it as npm start script:
{
"scripts": {
"dev": "svr",
"start": "bin/server"
}
}That's all.
License
svr © Kiko Beats, released under the MIT License. Authored and maintained by Kiko Beats with help from contributors.
kikobeats.com · GitHub Kiko Beats · Twitter @Kikobeats
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago