posthtml-insert-at
v0.2.7
Published
PostHTML plugin to append or prepend HTML to a selector
Downloads
2,783
Maintainers
Readme
posthtml-insert-at
posthtml-insert-at
is a PostHTML plugin to append or prepend HTML to a selector.
Examples
Before:
<html>
<body>
<main></main>
</body>
</html>
After:
<html>
<body>
<header></header>
<main></main>
<footer></footer>
</body>
</html>
Install
yarn add -D posthtml-insert-at
# OR
npm i posthtml-insert-at
Usage
const fs = require('fs');
const posthtml = require('posthtml');
const { insertAt } = require('posthtml-insert-at');
const html = fs.readFileSync('./index.html');
posthtml()
.use(
insertAt({
/**
* Specify the selector to append/prepend content to.
* Selectors include tag name (e.g. `main`), class (e.g. `.main`) or id (e.g. `#main`).
*/
selector: 'main',
/**
* Prepend HTML markup at the selector.
*/
prepend: `
<header>
<a href="/">Home</a>
</header>
`,
/**
* Append HTML markup at the selector.
*/
append: `
<footer>
© ${new Date().getFullYear()}
</footer>
`,
/**
* Specify whether to append/prepend content inside or outside (i.e. adjacent to) of the selector.
*
* The default behavior is `inside`.
*/
behavior: 'outside'
})
)
.process(html)
.then(result => fs.writeFileSync('./after.html', result.html));
Options
| Name | Kind | Description |
| ---------- | ------------------------------------------------------------ | ------------------------------------------------------------------- |
| selector
| required string
| Selector to insert markup at (e.g. .classname
, #id
or tag
) |
| prepend
| optional string
| Markup to prepend to the selector |
| append
| optional string
| Markup to append to the selector |
| behavior
| optional ("inside"
or "outside"
) - default is "inside"
| Whether to append/prepend content inside or outside of the selector |
The plugin accepts an object or an an array of objects.
const option = {
selector: 'body',
prepend: '<header></header>',
append: '<footer></footer>',
behavior: 'inside'
};
insertAt(option);
// OR
insertAt([option /*, ...more options */]);
Limitations
Currently, this plugin does not supported nested selectors.
Contributing
See the PostHTML Guidelines.