node package manager
Easy sharing. Manage teams and permissions with one click. Create a free org »

brick-router

brick-router

NPM version build status Test coverage Downloads js-standard-style

Static asset server that can write to files.

Installation

$ npm install brick-router

Usage

const brick = require('brick-router')
const fs = require('fs')
 
const router = brick()
 
router.on('/index.html', cb => {
  const rs = fs.createReadStream('index.html')
  cb(null, rs)
})
 
// use as router 
router.match('/index.html', (err, res) => {
  if (err) throw err
  res.pipe(process.stdout)
})
 
// write to file 
router.build(__dirname + '/my-dirname')

Why?

In development an application usually goes through 3 stages:

  • experiment - some html, css, js to toy around locally
  • static - static files, usually hosted on GitHub pages
  • server - application with a working backend

When switching stages it's common to throw out your build process, and start from scratch. brick-router allows you to keep the same build process by serving files both in-memory (for experimentation and servers) and being able to write to the filesystem (for static pages).

API

router = brick()

Create a new router.

router.on(filename, cb(err, data|stream))

Register a new path in the router. The callback either accepts data or a ReadableStream.

router.match(filename, cb(err, res))

Match a path on the router, pass in an optional callback to the router which can later be called.

router.build(directory, cb(err, res))

Execute all routes and write the output to a directory tree so it can be served statically. Calls an optional callback on completion.

See Also

License

MIT