app.engine()

Registers a template engine callback for a given file extension.

Since Express 4 Spec ↗

Syntax

app.engine(ext, callback)

Parameters

NameTypeRequiredDescription
ext string Yes The file extension to map, e.g. `'hbs'`.
callback function Yes `(path, options, callback)` rendering function.

Returns

Application — The app instance, for chaining.

Examples

import { engine } from 'express-handlebars';

app.engine('handlebars', engine());
app.set('view engine', 'handlebars');
app.set('views', './views');
// Custom engine
app.engine('txt', (filePath, options, cb) => {
  cb(null, `Rendered ${filePath} for ${options.name}`);
});
app.set('view engine', 'txt');
Output
Rendered /views/x.txt for Ada

Notes

Most popular engines (EJS, Pug) auto-register via `consolidate` or their own integration, so you only need `app.set('view engine')`. Use `app.engine` for engines whose module name differs from the extension, or for custom renderers.

See also