需要用到的plugin:
npm install html-webpack-plugin —save-dev
index.html 模板:
可以注意到html文件中没有css和js的引入。
<!DOCTYPE html>
<html lang="en">
<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>Document</title>
</head>
<body>
<div id="mydiv" class="div1"></div>
</body>
</html>
config文件:
基于上节学习中的文件。
plugins: [
new extractTextCss({
filename: '[name].min.css'
}),
new htmlWebpackPlugin({
filename: 'index.html',
template: './index.html'
})
]
可以看到打包后的结果,已经生成了一个index.html,并且css和js已经被正确的引入。之前我们都是手动引入,如果css或js文件名中包含hash,我们就不知道具体的hash是什么了,就需要用htmlplugin去帮我们自动引入。
修改config文件增加minify和inject:
minify表示是否压缩html,inject表示是否自动插入css和js的引用。
plugins: [
new extractTextCss({
filename: '[name].min.css'
}),
new htmlWebpackPlugin({
filename: 'index.html',
template: './index.html',
minify:{
collapseWhitespace:true
},
inject: true
})
]
chunks:
针对多入口打包,想要只引入某一个入口打包出来的资源(css,或js)。如下,指定了app,则只会引入app打包入口的资源。
plugins: [
new extractTextCss({
filename: '[name].min.css'
}),
new htmlWebpackPlugin({
filename: 'index.html',
template: './index.html',
minify:{
collapseWhitespace:true
},
inject: true,
chunks: ['app']
})
]