posthtml-modules
v0.9.1
Published
Posthtml modules processing
Downloads
4,737
Readme
Install
npm i -D posthtml-modules
Example
<!-- index.html -->
<html>
<body>
<module href="./module.html">
title
</module>
</body>
</html>
<!-- module.html -->
<header>
<h1>
Test <content></content>
</h1>
</header>
const { readFileSync } = require('fs')
const posthtml = require('posthtml')
const options = { /* see available options below */ }
posthtml()
.use(require('posthtml-modules')(options))
.process(readFileSync('index.html', 'utf8'))
.then((result) => result)
});
<html>
<body>
<header>
<h1>Test title</h1>
</header>
</body>
</html>
Options
root
Type: string
Default: ./
Root path for modules lookup.
plugins
Type: array | function
Default: []
PostHTML plugins to apply for every parsed module.
If a function provided, it will be called with module's file path.
from
Type: string
Default: ''
Root filename for processing apply, needed for path resolving (it's better to always provide it).
initial
Type: boolean
Default: false
Apply plugins to root file after modules processing.
tag
Type: string
Default: module
Use a custom tag name.
attribute
Type: string
Default: href
Use a custom attribute name.
locals
Type: object
Default: {}
Pass data to the module.
If present, the JSON object from the locals=""
attribute will be merged on top of this, overwriting any existing values.
attributeAsLocals
Type: boolean
Default: false
All attributes on <module></module>
will be added to locals
parser
Type: object
Default: {}
Options for the PostHTML parser.
By default, posthtml-parser
is used.
expressions
Type: object
Default: {}
Options to forward to posthtml-expressions, like custom delimiters for example. Available options can be found here.
Component options
locals
You can pass data to a module using a locals=""
attribute.
Must be a valid JSON object.
Example:
<!-- module.html -->
<p>The foo is {{ foo }} in this one.</p>
<content></content>
<!-- index.html -->
<module href="./module.html" locals='{"foo": "strong"}'>
<p>Or so they say...</p>
</module>
Result
<p>The foo is strong in this one.</p>
<p>Or so they say...</p>
attributeAsLocals
All attributes on <module></module>
will be added to locals
Example:
<!-- module.html -->
<div class="{{ class }}" id="{{ id }}" style="{{ style }}">
<content></content>
</div>
<!-- index.html -->
<module
href="module.html"
class="text-center uppercase"
id="example"
style="display: flex; gap: 2;"
>
Module content
</module>
Result
<div class="text-center uppercase" id="example" style="display: flex; gap: 2;">
Module content
</div>