需要用到的plugin:
    npm install html-webpack-plugin —save-dev

    image.png

    index.html 模板:

    可以注意到html文件中没有css和js的引入。

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta http-equiv="X-UA-Compatible" content="ie=edge">
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <div id="mydiv" class="div1"></div>
    11. </body>
    12. </html>

    config文件:

    基于上节学习中的文件。

    1. plugins: [
    2. new extractTextCss({
    3. filename: '[name].min.css'
    4. }),
    5. new htmlWebpackPlugin({
    6. filename: 'index.html',
    7. template: './index.html'
    8. })
    9. ]

    可以看到打包后的结果,已经生成了一个index.html,并且css和js已经被正确的引入。之前我们都是手动引入,如果css或js文件名中包含hash,我们就不知道具体的hash是什么了,就需要用htmlplugin去帮我们自动引入。

    修改config文件增加minify和inject:
    minify表示是否压缩html,inject表示是否自动插入css和js的引用。

    1. plugins: [
    2. new extractTextCss({
    3. filename: '[name].min.css'
    4. }),
    5. new htmlWebpackPlugin({
    6. filename: 'index.html',
    7. template: './index.html',
    8. minify:{
    9. collapseWhitespace:true
    10. },
    11. inject: true
    12. })
    13. ]

    chunks:

    针对多入口打包,想要只引入某一个入口打包出来的资源(css,或js)。如下,指定了app,则只会引入app打包入口的资源。

    1. plugins: [
    2. new extractTextCss({
    3. filename: '[name].min.css'
    4. }),
    5. new htmlWebpackPlugin({
    6. filename: 'index.html',
    7. template: './index.html',
    8. minify:{
    9. collapseWhitespace:true
    10. },
    11. inject: true,
    12. chunks: ['app']
    13. })
    14. ]