如何在html-webpack-plugin中注入自定义元标记?

Nic*_*cky 6 javascript node.js webpack html-webpack-plugin

我使用Webpack和插件html-webpack-plugin.基于环境变量,我想<meta></meta>在最终index.html文件中注入一个标签.

我该怎么做呢?

Mic*_*ngo 18

您可以定义自己的模板.在编写自己的模板时简要提到,您可以传递任何您想要的选项,并在模板中使用它们htmlWebpackPlugin.options:

htmlWebpackPlugin.options:传递给插件的选项哈希.除了此插件实际使用的选项之外,您还可以使用此哈希将任意数据传递到模板.

例如,您可以使用环境变量定义作者AUTHORauthor为插件添加选项:

new HtmlWebpackPlugin({
  template: 'template.ejs',
  author: process.env.AUTHOR
})
Run Code Online (Sandbox Code Playgroud)

在你的template.ejs,你可以创建一个<meta>与信息标签:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <% if (htmlWebpackPlugin.options.author) { %>
    <meta name="author" content="<%= htmlWebpackPlugin.options.author %>">
    <% } %>
  </head>
  <body>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

您可以使用.html文件而插件将回退ejs-loader,但如果您已html-loader配置.html文件,它将使用该文件而不是回退,因此嵌入将无效.

AUTHOR设置将包括与作者的meta标签,否则它不包括在内.运行:

AUTHOR='Foo Bar' webpack
Run Code Online (Sandbox Code Playgroud)

将包含以下元标记:

<meta name="author" content="Foo Bar">
Run Code Online (Sandbox Code Playgroud)


Wil*_*ill 9

   new HtmlWebpackPlugin({
     template: 'index.html',
     meta: {
       author: process.env.AUTHOR
     }
   });
Run Code Online (Sandbox Code Playgroud)

导致在您的 head 标签中包含以下内容。

<meta name="author" content="Foo Bar">