diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..6a4543af7c7a417d0d7f2865f6257e1f047116b7 --- /dev/null +++ b/README.md @@ -0,0 +1,68 @@ +# koa-mustache +Mustache template rendering for Koa 2+ + +## Installation + +`npm i --save @commander-lol/koa-mustache` + +## Example + +```js +const path = require('path') +const Koa = require('koa') +const mustache = require('@commander-lol/koa-mustache') + +const app = new Koa() + +const templatePath = path.join(__dirname, 'views') +app.use(mustache(templatePath)) + +// Respond to all requests with the template at `./views/index.mustache` +app.use(async ctx => { + await ctx.render('index') +}) + +``` + +## Usage +- Require the module `const mustache = require('@commander-lol/koa-middleware')` +- Call the function to configure the middleware `const middleware = mustache(myTemplateDirectoryPath, myOpts)` +- Mount the middleware on your app `app.use(middleware)` +- The `ctx.render` function has been added to all subsequent middleware (including routes when using routers). +`await` this function to render the specified params to the ctx body. If the template is not found, the status +will be set to 404. If the template path is not a regular file, the status will be set to 500. + +## Types + +These are the types that you need to be aware of to use `koa-mustache`. The export of this module +(the object imported by `require('@commander-lol/koa-mustache')`) is of the type `ConfigureMiddleware`. + +**Configuration Options** +```jsx +type Options = { + debug(...args: any[]): void, + useCache?: boolean, + extension?: string, + partials?: string, +} +``` + +**Module Export** +```jsx +type ConfigureMiddleware = (root: string, opts?: Options): KoaMiddleware +``` + +**Render Function** +```jsx +type RenderTemplate = (template: string, data: Object): Promise<void> +``` + +## Options + +name | type | default | notes +-----|------|---------|------ +debug|`Function`|noop|Will receive debug information. Typically printed with `console.log`, but could be sent elsewhere +useCache|`boolean`|if `NODE_ENV` is equal to `production`, true otherwise false|Will load templates on server boot, and exclusively use the in-memory cache for retrieving templates to render. Partials will always be loaded on boot +extension|`string`|`.mustache`|The file extension to use when loading templates (Must include leading dot) +partials|`string`|`partials`|The path, relative to the middleware root, where partials are located +