美文网首页
html-webpack-plugin

html-webpack-plugin

作者: hanxianshe_9530 | 来源:发表于2019-10-23 17:21 被阅读0次
    var htmlWebpackPlugin = require('html-webpack-plugin')
    
    const path = require('path')
    module.exports = {
        entry: './src/script/main.js',
        output: {
            filename: 'js/bundle.js',
            path: path.resolve(__dirname, 'dist')
        },
        plugins: [
            new htmlWebpackPlugin({
                filename: 'index.html',
                template: 'index.html',
                inject: 'head'
            })
        ]
    }
    

    配置属性

    title

    生成html文件的标题

    filename

    就是html文件的文件名,默认是index.html

    template

    指定你生成的文件所依赖哪一个html文件模板,模板类型可以是html、jade、ejs等。但是要注意的是,如果想使用自定义的模板文件的时候,你需要安装对应的loader哦。

    inject

    inject有四个值: true body head false

    true 默认值,script标签位于html文件的 body 底部
    body script标签位于html文件的 body 底部
    head script标签位于html文件的 head中
    false 不插入生成的js文件,这个几乎不会用到的

    favicon

    给你生成的html文件生成一个 favicon ,值是一个路径

    plugins: [
        new HtmlWebpackPlugin({
            ...
            favicon: 'path/to/my_favicon.ico'
        }) 
    

    然后再生成的html中就有了一个 link 标签

    <link rel="shortcut icon" href="example.ico">
    

    minify

    使用minify会对生成的html文件进行压缩。默认是false。html-webpack-plugin内部集成了 html-minifier,因此,还可以对minify进行配置:(注意,虽然minify支持BooleanObject,但是不能直接这样写:minify: true , 这样会报错 ERROR in TypeError: Cannot use 'in' operator to search for 'html5' in true , 使用时候必须给定一个 { } 对象 )

    ...
    plugins: [
        new HtmlWebpackPlugin({
            ...
            minify: {
                removeAttributeQuotes: true // 移除属性的引号
            }
        })
    ]
    

    hash

    hash选项的作用是 给生成的 js 文件一个独特的 hash 值,该 hash 值是该次 webpack 编译的 hash 值。默认值为 false 。同样看一个例子。

    plugins: [
        new HtmlWebpackPlugin({
            hash: true
        })
    ]
    

    编译打包后

    <script type=text/javascript src=bundle.js?22b9692e22e7be37b57e></script>
    

    bundle.js 文件后跟的一串 hash 值就是此次 webpack 编译对应的 hash 值。

    chunks

    chunks主要用于多入口文件,当你有多个入口文件,那就回编译后生成多个打包后的文件,那么chunks 就能选择你要使用那些js文件

    entry: {
        index: path.resolve(__dirname, './src/index.js'),
        devor: path.resolve(__dirname, './src/devor.js'),
        main: path.resolve(__dirname, './src/main.js')
    }
    
    plugins: [
        new httpWebpackPlugin({
            chunks: ['index','main']
        })
    ]
    

    那么编译后:

    <script type=text/javascript src="index.js"></script>
    <script type=text/javascript src="main.js"></script>
    

    而如果没有指定 chunks 选项,默认会全部引用。

    excludeChunks

    排除掉一些js

    entry: {
        index: path.resolve(__dirname, './src/index.js'),
        devor: path.resolve(__dirname, './src/devor.js'),
        main: path.resolve(__dirname, './src/main.js')
    }
    
    plugins: [
        new httpWebpackPlugin({
         excludeChunks: ['devor.js']//和的等等效
        })
    ]
    

    那么编译后:

    <script type=text/javascript src="index.js"></script>
    <script type=text/javascript src="main.js"></script>
    

    相关文章

      网友评论

          本文标题:html-webpack-plugin

          本文链接:https://www.haomeiwen.com/subject/lvikvctx.html