/**
* The plugin options
*/
interface HtmlWebpackPluginOptions {
/**
* The title to use for the generated HTML document
*/
title: string,
/**
* The `webpack` require path to the template.
* @see https://github.com/jantimon/html-webpack-plugin/blob/master/docs/template-option.md
*/
template: string,
/**
* Allow to use a html string instead of reading from a file
*/
templateContent:
false // Use the template option instead to load a file
| string
| Promise<string>,
/**
* Allows to overwrite the parameters used in the template
*/
templateParameters:
false // Pass an empty object to the template function
| ((compilation: any, assets, assetTags: { headTags: Array<HtmlTagObject>, bodyTags: Array<HtmlTagObject> }, options: HtmlWebpackPluginOptions) => {[option: string]: any})
| ((compilation: any, assets, assetTags: { headTags: Array<HtmlTagObject>, bodyTags: Array<HtmlTagObject> }, options: HtmlWebpackPluginOptions) => Promise<{[option: string]: any}>)
| {[option: string]: any}
/**
* The file to write the HTML to.
* Defaults to `index.html`.
* Supports subdirectories eg: `assets/admin.html`
*/
filename: string,
/**
* If `true` then append a unique `webpack` compilation hash to all included scripts and CSS files.
* This is useful for cache busting
*/
hash: boolean,
/**
* Inject all assets into the given `template` or `templateContent`.
*/
inject: false // Don't inject scripts
| true // Inject scripts into body
| 'body' // Inject scripts into body
| 'head' // Inject scripts into head
/**
* Path to the favicon icon
*/
favicon: false | string,
/**
* HTML Minification options
* @https://github.com/kangax/html-minifier#options-quick-reference
*/
minify?: boolean | {},
cache: boolean,
/**
* Render errors into the HTML page
*/
showErrors: boolean,
/**
* List all entries which should be injected
*/
chunks: 'all' | string[],
/**
* List all entries which should not be injeccted
*/
excludeChunks: string[],
chunksSortMode: 'auto' | 'manual' | (((entryNameA: string, entryNameB: string) => number)),
/**
* Inject meta tags
*/
meta: false // Disable injection
| {
[name: string]: string|false // name content pair e.g. {viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'}`
| {[attributeName: string]: string|boolean} // custom properties e.g. { name:"viewport" content:"width=500, initial-scale=1" }
},
/**
* Enforce self closing tags e.g. <link />
*/
xhtml: boolean
/**
* In addition to the options actually used by this plugin, you can use this hash to pass arbitrary data through
* to your template.
*/
[option: string]: any;
}
/**
* A tag element according to the htmlWebpackPlugin object notation
*/
interface HtmlTagObject {
/**
* Attributes of the html tag
* E.g. `{'disabled': true, 'value': 'demo'}`
*/
attributes: {
[attributeName: string]: string|boolean
},
/**
* Wether this html must not contain innerHTML
* @see https://www.w3.org/TR/html5/syntax.html#void-elements
*/
voidTag: boolean,
/**
* The tag name e.g. `'div'`
*/
tagName: string,
/**
* Inner HTML The
*/
innerHTML?: string
}
/**
* The values which are available during template execution
*
* Please keep in mind that the `templateParameter` options allows to change them
*/
interface HtmlWebpackPluginTemplateParameter {
compilation: any,
webpackConfig: any
htmlWebpackPlugin: {
tags: {
headTags: HtmlTagObject[],
bodyTags: HtmlTagObject[]
},
files: {
publicPath: string,
js: Array<string>,
css: Array<string>,
manifest?: string,
favicon?: string
},
options: HtmlWebpackPluginOptions
}
}