想要根据HTML模版自动生成HTML,就需要使用一个插件:html-webpack-plugin
html-webpack-plugin会为你自动生成一个html文件,根据指定的index.html模版生成对应的html文件。
比如:根据src下的index.html文件自动在打包后的目录下生成webpack.html文件,相关引用关系和文件路径都会按照正确的配置被添加进生成的html文件里,如下图所示:
具体步骤:
1.安装依赖
打开终端,进入到项目文件夹路径,输入命令cnpm install html-webpack-plugin --save-dev
2.配置webpack.config.js文件
首先需要引入html-webpack-plugin插件
const HtmlWebpackPlugin = require('html-webpack-plugin');
在module.exports = {}里写配置:
plugins:[
new HtmlWebpackPlugin({
template:"./public/index.html",
filename:"webpack.html"
})
]
3.在终端输入npm run dev
进行打包。
这时就会在出口指定的文件夹下出现webpack.html文件。
配置文件中还可以写入minify进一步进行配置,代码如下:
plugins:[
new HtmlWebpackPlugin({
template:"./public/index.html",
filename:"webpack.html",
minify:{
minimize:true,//是否打包为最小值
removeAttributeQuotes:true,//去除引号
removeComments:true,//去除注释
collapseWhitespace:true,//去除空格
minifyCSS:true,//压缩html内的样式
minifyJS:true,//压缩html内的js
removeEmptyElements:true,//清理内容为空的元素
},
hash:true//引入产出资源的时候加上哈希避免缓存
})
]
举个例子,加入这个配置之后再打包,打包前的html文件:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style type="text/css">
.box{
display: inline;
background: red;
}
</style>
</head>
<body>
<h1></h1>
<div></div>
<!-- 生成html -->
<div class="box">111</div>
<script type="text/javascript">
var a = 1;
console.log(a);
</script>
</body>
</html>
打包后的html文件:
<!DOCTYPE html><html><head><meta charset=utf-8><style type=text/css>.box{display:inline;background:red}</style></head><body><div class=box>111</div><script type=text/javascript>var a=1;console.log(a)</script><script src=bundle.js?c8560c7c16ad8d54689e></script></body></html>