node package manager
We need your input. Help make JavaScript better: Take the 2017 JavaScript Ecosystem survey »



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

Static asset server that can write to files.


$ npm install brick-router


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
// write to file + '/my-dirname')


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).


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., 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