Fastify plugin to render WebC templates and components.
npm install @jackdbd/fastify-webc
Register this plugin by telling it where to find your WebC components and templates.
This plugin decorates FastifyReply with a render method. This method takes two arguments: a WebC template and an optional data object.
import webc from '@jackdbd/fastify-webc'
fastify.register(webc, {
components: ['src/components/**/*.webc'],
templates: [path.join(__dirname, 'templates')]
})
fastify.get('/demo', function (request, reply) {
const data = { foo: 'bar' }
return reply.render('demo.webc', data)
})
To ensure TypeScript recognizes the render method as part of the FastifyReply object, you must use declaration merging to extend the FastifyReply interface.
declare module 'fastify' {
interface FastifyReply {
render(template: string, data?: Record<string, any>): Promise<void>
}
}
You can access the WebC instance from your WebC template/component using this.webc.
<code>this.webc</code>
<pre @text="JSON.stringify(this.webc, null, 2)"></pre>
You can access the data available to the WebC template/component using this.$data.
<code>this.$data</code>
<pre @text="JSON.stringify(this.$data, null, 2)"></pre>
| Package | Version |
|---|---|
| @11ty/webc | ^0.11.4 |
| fastify-plugin | ^5.0.1 |
This package defines 1 peer dependency.
| Peer | Version range |
|---|---|
fastify |
>=5.0.0 |
© 2024 - 2025 Giacomo Debidda // MIT License