Object | Functionconst defaultMeta = {
// <meta charset="UTF-8" />
charset: {
charset: 'UTF-8',
},
// <meta name="viewport" content="width=device-width, initial-scale=1.0" />
viewport: 'width=device-width, initial-scale=1.0',
};配置 HTML 页面的 <meta> 标签。
如果当前项目使用的 HTML 模板中已经包含了 charset 或 viewport meta 标签,那么 HTML 模板中的标签优先级更高。
type MetaOptions = {
[name: string]: string;
};当 meta 对象的 value 为字符串时,会自动将对象的 key 映射为 name,value 映射为 content。
比如设置 description:
export default {
html: {
meta: {
description: 'a description of the page',
},
},
};最终在 HTML 中生成的 meta 标签为:
<meta name="description" content="a description of the page" />type MetaOptions = {
[name: string]:
| string
| false
| {
[attr: string]: string | boolean;
};
};当 meta 对象的 value 为对象时,会将该对象的 key: value 映射为 meta 标签的属性。
比如设置 charset:
export default {
html: {
meta: {
charset: {
charset: 'UTF-8',
},
},
},
};最终在 HTML 中生成的 meta 标签为:
<meta charset="UTF-8" />type MetaFunction = ({
value: MetaOptions,
entryName: string,
}) => MetaOptions | void;当 html.meta 为 Function 类型时,函数接收一个对象作为入参,对象的值包括:
value:Rsbuild 的默认 meta 配置。entryName: 当前入口的名称。你可以直接修改配置对象不做返回,也可以返回一个对象作为最终的配置。
比如,你可以直接修改内置的 meta 配置对象:
export default {
html: {
meta({ value }) {
value.description = 'this is my page';
return value;
},
},
};在 MPA(多页面应用)场景下,你可以基于入口名称返回不同的 meta 配置,从而为每个页面生成不同的 meta 标签:
export default {
html: {
meta({ entryName }) {
switch (entryName) {
case 'foo':
return {
description: 'this is foo page',
};
case 'bar':
return {
description: 'this is bar page',
};
default:
return {
description: 'this is other pages',
};
}
},
},
};将 meta 对象的 value 设置为 false,则表示不生成对应的 meta 标签。
比如移除 Rsbuild 预设的 viewport:
export default {
html: {
meta: {
viewport: false,
},
},
};