koa-resourcer v1.0.2
koa-resourcer
A simple resource directory mounter for koa.
var koa = require('koa');
var resource = require('koa-resourcer');
var app = koa();
resource(app, join(__dirname, 'resources') [, callback])
app.listen();The idea behind koa-resourcer is complete modularity within your
koa app. Each directory can be a stand-alone koa application with all
it's own tests, docs, dependencies, etc. koa-resourcer makes it easy to
mount these apps if you follow a simple directory pattern.
Directory structure
Say we have the following directory structure:
resources/
|-- v1/users/
| |-- config.json
| `-- app.js
|-- v1/products/
| |-- config.json
| |-- makefile
| |-- index.js
| |-- lib/
| | `-- utils.js
| `-- test/
| `-- index.js
`-- v2/users/
|-- config.json
`-- fun.jsWe have three independent apps here. v1/users/app.js, v1/products/index.js and
v2/users/fun.js. We could use koa-mount directly and be done with it but
that requires the parent application to know where all the apps are and the paths
on which they should be mounted.
var koa = require('koa')
var mount = require('koa-mount')
var app = koa()
var v1users = require('./v1/users/app.js')
app.use(mount('v1/users/', v1users))
var v2users = require('./v2/users/fun.js')
app.use(mount('v2/users/', v2users))
var v1products = require('./v1/products/')
app.use(mount('v1/products/', v1products))
// and so on, and so on, for each of your sub apps....
app.listen()With koa-resourcer you let your directory structure and some simple
config files do the talking for you, keeping your parent application
peacefully oblivious.
var koa = require('koa')
var join = require('path').join
var resource = require('koa-resourcer')
var app = koa()
resource(app, join(__dirname, 'resources'))
app.listen()config.json
Each application directory must contain a config.json file. The config.json file
is used to discover the location of the application source code. This information
is stored in it's source property.
// resources/v1/users/config.json
{ "source": "app.js" }By relying on the directory structure to determine route paths, koa-resourcer
will automatically mount app.js on /v1/users/ for you. If this path isn't
quite what you want, koa-resourcer also supports configuring your path names in
the config.json files.
// resources/v1/users/config.json
{ "source": "app.js", "path": "user" }By adding the path property to our configuration, koa-resourcer will now mount
the app on /v1/user/.
Callbacks
If you pass a callback function as the third argument to koa-resourcer, it
will be executed for each mounted application passing an object containing
the path and application resource.
var koa = require('koa')
var join = require('path').join
var resource = require('koa-resourcer')
var app = koa()
resource(app, join(__dirname, 'resources'), function(o){
console.log('mounted %s', o.path, o.resource)
})
app.listen()Installation
npm install koa-resourcer --saveDevelopment
running tests
make testruns testsmake test-covruns tests + test coveragemake open-covopens test coverage results in your browser
verbose logging
koa-resourcer supports the debug module for help during development.
Enable verbose logging by setting your DEBUG env variable like so:
DEBUG=koa-resourcer* npm test
```
## Sponsored by
[Pebble Technology!](https://getpebble.com)
## License
[MIT](https://github.com/pebble/koa-resourcer/blob/master/LICENSE)