Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

koa-file-router

dominicbarnes2MIT1.0.0

A module that transforms a directory into a koa router

koa, router, file, path

readme

koa-file-router

Generates a koa-router instance from a directory of files, allowing the path to determine the resulting url.

npm version npm dependencies npm dev dependencies build status

Usage

I took a lot of concepts from a similar project I worked on previously.

NOTE: version 1.x is written for koa@2+. If you need support for koa@1 or below, then use v0.x.

Server

var koa = require('koa');
var resources = require('koa-file-router');
var app = koa();

var router = resources('./routes');
app.use(router.routes());

Resources Directory

Each module inside the given resource directory generally will map to a route:

File URL
index.js /
users/index.js /users
users/new.js /users/new
users/:user.js /users/:user
_params/user.js (param)

Some things to note:

  • Files named index.js will have the trailing index stripped
  • Files under _params/ will be added as param handlers instead of routes
  • Files with a : prefix will be mounted after static routes. (to keep /users/:user from pre-empting /users/new)

Resource Module

Each resource module can export a function for any valid HTTP method. (the property name should be lowercase)

exports.get = function* () {
  // GET handler...
};

exports.post = function* () {
  // POST handler...
};

Param Module

All modules matching _params/*.js will be used as params. These modules should export a single middleware function.

module.exports = function* (next) {
  // param handler...
  yield* next;
};

NOTE: do not nest params in sub-directories within _params, only the base name of the file is considered when naming the param.

API

resources(dir, [options])

This method synchronously traverses the given dir, and returns a koa-router instance.

Available options include:

  • prefix: will be passed to koa-router and used to prefix all URLs

changelog

1.0.0 / 2018-02-12

  • add koa 2 support

0.3.0 / 2015-12-27

  • supporting 'all' route type

0.2.0 / 2015-12-27

  • adding named route support (hacky atm)

0.1.0 / 2015-12-24

  • using supertest instead of relying on koa-router internals
  • adding travis
  • eslint fix
  • adding eslint
  • supporting middleware in route handlers

0.0.2 / 2015-08-22

  • fixing case where sub-paths have differing lengths

0.0.1 / 2015-08-09

:sparkles: