lit-hook
A require hook that compiles lit-html files
Installation
npm i lit-hook
Usage
This hook takes a lit-html file and returns an async function that renders the template to an HTML string,
Most lit html directives are supported via @popeindustries/lit-html-server.
const addLitHook = require('lit-hook')
const revert = addLitHook()
const template = require('./fixtures/basic.lit')
// <div>${locals.basic}</div>
await template({ basic: 'hello' })
// <div>hello</div>
revert() // stop the hook from running
Options
addLitHook({exts: ['.lit'], matcher: file => file.startsWith('z'), portable: true, wrapper: code => `(context, locals) => context.renderToStream(context.html)`})
exts
The file extensions targeted by the hook default: ['.lit']
so to add html file compilation use ['.lit', '.html']
matcher function(filename)
With this method you can inspect the filename to determine if it should be hooked or not.
Just return a truthy/falsy. Files in node_modules are ignored, unless otherwise specified in options (read more on pirates).
The default matcher returns true for all files.
portable boolean
Changes the hook to produce portable templates. Portable templates require you to supply the rendering context (render, html, directives, etc).
wrapper function(code)
Allows the customization of the code wrapper used by the hook.
For example with the code:
'hello world'
and the custom wrapper:
(code) => ('module.exports = () => (code)
files will look like this when required:
module.exports = () => ('hello world')
License
Unless stated otherwise all works are:
- Copyright © Robin Marr
and licensed under:
Thanks
Thanks to Alexander Pope for lit-html-server and ariporad for pirates they made this a breeze, also thanks to Justin Fagnani and the team behind the lit-html project!