Mustache rendering for Koa 2+


1.0.34 years ago4 years agoMinified + gzip package size for @commander-lol/koa-mustache in KB



Mustache template rendering for Koa 2+


npm i --save @commander-lol/koa-mustache


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

// Respond to all requests with the template at `./views/index.mustache`
app.use(async ctx => {
  await ctx.render('index')


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


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

type Options = {
  debug(...args: any[]): void,
  useCache?: boolean,
  extension?: string,
  partials?: string,

Module Export

type ConfigureMiddleware = (root: string, opts?: Options): KoaMiddleware

Render Function

type RenderTemplate = (template: string, data: Object): Promise<void>


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

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.