Plugin for html-webpack-plugin to output top level root html element.
This is especially usuful for front end frameworks such as React or Angular
when you want to mount and render your application to top level element and not directly into <body/>.
html-wepack-root-element-plugin is easiest to use when installed with npm:
npm install --save-dev html-webpack-root-element-pluginor with yarn:
yarn add -D html-webpack-root-element-pluginJust import the module into your webpack config and place if after html-webpack-plugin:
const HtmlWebpackRootElementPlugin = require("html-webpack-root-element-plugin");
module.exports = {
// ...
plugins: [
// ...
new HtmlWebpackPlugin(),
new HtmlWebpackRootElementPlugin(),
// ...
]
};By default plugin will produce following root element as the first child element under <body/>:
<div id="root"></div>There are few options to customize the plugin bahavior. You can configure the html tag
to be used to create root element and id attribute on the tag. Tweak up plugin output
by passingrootElement parameter to your html-webpack-plugin constructor options object.
By default this equals true.
Possible values:
boolean- Iffalsethen root element will not be rendered.string- Passing string value will override defaultidattribute on rendered element.object- Object can have two optional propertiestagNameto define tag to use andidAttributeto setidattribute for element.
Example with string value:
const HtmlWebpackRootElementPlugin = require("html-webpack-root-element-plugin");
module.exports = {
// ...
plugins: [
// ...
new HtmlWebpackPlugin({
rootElement: "my-id"
}),
new HtmlWebpackRootElementPlugin(),
// ...
]
};will output:
<div id="my-id"></div>Example with object value:
const HtmlWebpackRootElementPlugin = require("html-webpack-root-element-plugin");
module.exports = {
// ...
plugins: [
// ...
new HtmlWebpackPlugin({
rootElement: {
tagName: "main",
idAttribute: "my-id"
}
}),
new HtmlWebpackRootElementPlugin(),
// ...
]
};will output:
<main id="my-id"></main>The library is written in TypeScript and thus type definitions are already included.
html-webpack-root-element-plugin is licensed under the MIT license.
Copyright © 2018, Karol Janyst