html-webpack-plugin 自定义模板

639 阅读1分钟

配置自定义模板

  不带参数的 html-webpack-plugin 默认生成的html文件只是将thunk 和css 样式插入到文档中,可能不能满足我们的要求,,对于多页面应用,如果每个页面的模板文件不同,可以直接使用默认配置,,但是在项目中,可能所有的页面的模板文件可以共用一个模板,因为 html-webpack-plugin 插件支持不同的模板loader,所以结合模板引擎来公用一个模板文件有了可能。

例如项目中有2个入口html页面,它们可以公用一个模板文件,利用ejs模板的语法来动态插入各自页面的thunk和css样式,代码可以这样:

<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title><%= htmlWebpackPlugin.options.title %></title></title>
 <% for(var css in htmlWebpackPlugin.files.css){ %>
   <link href="<%=htmlWebpackPlugin.files.css[css]  %>" rel='stylesheet'>
 <% } %>
 <link>
</head>
<body>
 <div id='app'></div>
<% for(var chunk in htmlWebpackPlugin.files.chunks) {%>
 <script type='text/script' src="<%=htmlWebpackPlugin.files.chunks[chunk].entry  %>"></script>
 <% } %>
</body>
</html>

自定义模板上下文数据

html-webpack-plugin 在生成html文件的过程中,插件会根据配置生成一个对当前模板可用的特定数据,模板语法可以根据这些数据来动态生成html文件的内容。模板引擎具体可以访问的数据如下:

var templateParams={

compilation:compilation,

webpack:compilation.getStats().toJson(),

webpackConfig:compilation.options,

htmlWebpackPlugin:{

  files:assets,

      options:self.options

 }

}

这样我们就可以通过ejs语法,访问对应的自定义属性的数据了。

"<%=htmlWebpackPlugin.files.asset %>"