html.templateParameters
- Type:
Record<string, unknown> | Function
- Default:
type DefaultParameters = {
mountId: string; // the value of `html.mountId` config
entryName: string; // entry name
assetPrefix: string; // the value of dev.assetPrefix or output.assetPrefix configs
compilation: Compilation; // Compilation object of Rspack
rspackConfig: Rspack.Configuration; // Rspack config object
// generated by html-rspack-plugin
htmlPlugin: {
tags: {
headTags: HtmlTagObject[];
bodyTags: HtmlTagObject[];
};
files: {
publicPath: string;
js: Array<string>;
css: Array<string>;
favicon?: string;
};
};
};
Define the parameters in the HTML template, corresponding to the templateParameters
config of html-rspack-plugin.
Object Usage
If the value of templateParameters
is an object, it will be merged with the default parameters using Object.assign
.
For example, if you need to use the foo
parameter in an HTML template, you can add the following settings:
export default {
html: {
templateParameters: {
foo: 'bar',
},
},
};
Then, you can read the parameter in the HTML template using <%= foo %>
:
<script>
window.foo = '<%= foo %>';
</script>
The compiled HTML code will be:
<script>
window.foo = 'bar';
</script>
Function Usage
type TemplateParametersFunction = (
defaultValue: Record<string, unknown>,
utils: { entryName: string },
) => Record<string, unknown> | void;
When html.templateParameters
is of type Function, the function receives two parameters:
value
: Default templateParameters
configuration of Rsbuild.
utils
: An object containing the entryName
field, corresponding to the name of the current entry.
In the context of a multi-page application (MPA), you can set different templateParameters
based on the entry name:
export default {
html: {
templateParameters(defaultValue, { entryName }) {
const params = {
foo: {
...defaultValue,
type: 'Foo',
},
bar: {
...defaultValue,
type: 'Bar',
hello: 'world',
},
};
return params[entryName] || defaultValue;
},
},
};