https://github.com/joyqi/koa-pug-middleware
A Koa Pug view render middleware.
https://github.com/joyqi/koa-pug-middleware
koa koa-pug pug pugjs
Last synced: 5 months ago
JSON representation
A Koa Pug view render middleware.
- Host: GitHub
- URL: https://github.com/joyqi/koa-pug-middleware
- Owner: joyqi
- License: mit
- Created: 2022-11-25T02:36:36.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-09-25T09:24:45.000Z (9 months ago)
- Last Synced: 2025-11-30T07:25:46.799Z (7 months ago)
- Topics: koa, koa-pug, pug, pugjs
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/koa-pug-middleware
- Size: 55.7 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# koa-pug-middleware
This is a Koa middleware wrapper for [Pug](https://pugjs.org/) template engine.
Compare to [koa-pug](https://www.npmjs.com/package/koa-pug), this middleware has the following features:
1. More elegant API, no need to pass `app` to `Pug` constructor.
2. Follows KISS principle, keep more things to Pug.
3. Support `koa@2` only.
4. Support `pug@3` only.
5. Add `context.setLocal` method, so you can set locals in middleware.
## Installation
```bash
npm install -s koa-pug-middleware
```
## Usage
### Mount the middleware
Use [Pug](https://pugjs.org/api/reference.html) options to initialize the middleware:
```typescript
import * as Koa from 'koa';
import * as pug from 'koa-pug-middleware';
const app = new Koa();
app.use(pug({
debug: false,
cache: true, // NOTE: set to false in development
pretty: false,
compileDebug: false,
locals: {
globalFoo: 'bar' // You can set global locals here
},
basedir: './views'
}));
```
### `context.setLocal(key, value)`
Parameters:
- `key` - The key of the local variable.
- `value` - The value of the local variable.
```typescript
app.use(async (ctx) => {
ctx.setLocal('foo', 'bar'); // You can set locals here
});
```
### `context.render(view, locals, options?)`
Parameters:
- `view` - The path of the view file. Relative to the `basedir` option. You can omit the extension name.
- `locals` - The locals for the view.
- `options` - The options for the view. See [Pug options](https://pugjs.org/api/reference.html#options). Will override the options in the middleware.
```typescript
app.use(async (ctx) => {
await ctx.render('index', {
foo: 'bar' // You can set locals here
});
});
```