《十六》对打包后的 HTML 文件中的代码进行压缩

使用 HtmlWebpackPlugin 插件来对打包后的 HTML 文件中的代码进行压缩。

  1. 新建 index.htmlsrc/index.js 文件并编写代码。
    // index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      <style>
        .title {
          font-size: 24px;
        }
      </style>
    </head>
    <body>
      <div class="title" style="color:   red;   ">标题</div>
      <!-- 注释:type="text" 是多余的属性,id=""是属性值为空的属性 -->
      <input type="text" id="" onchange="console.log(   '输入文字'   )" />
      <script>
        const getNum = () => {
          return 10
        }
      </script>
    </body>
    </html>
    
    /src/index.js
    console.log('index')
    
  2. 安装 HtmlWebpackPlugin 插件: npm install html-webpack-plugin --save-dev
  3. webpack.config.js 中进行配置。
    // webpack.config.js
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
      // production 模式下 HtmlWebpackPlugin 插件默认就会对 HTML 文件中的代码进行压缩,因此此处使用 development 模式
      mode: 'development',
      plugins: [
        new HtmlWebpackPlugin({
          template: './index.html',
        }),
      ]
    }
    
  4. 运行 webpack 命令进行打包,会发现,根据 index.html 生成了打包后的 HTML 文件,但是并没有对其进行任何的压缩。
    请添加图片描述
  5. webpack.config.js 中进行配置。
    // webpack.config.js
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    
    module.exports = {
       // production 模式下 HtmlWebpackPlugin 插件默认就会对 HTML 文件中的代码进行压缩,因此此处使用 development 模式
      mode: 'development',
      plugins: [
        new HtmlWebpackPlugin({
          template: './index.html',
          minify: {
            // 折叠HTML 文件中的空格
            collapseWhitespace: true,
            // 对 HTML 文件中的内联样式和内部样式表进行压缩
            minifyCSS: true,
            // 对 HTML 文件中事件定义方式和嵌入式的 JS 代码进行压缩
            minifyJS: true,
            // 移除HTML 文件中的注释
            removeComments: true,
            // 移除 HTML 元素上多余的属性
            removeRedundantAttributes: true,
            // 折叠HTML 文件中的空格
            removeEmptyAttributes: true,
          },
        }),
      ]
    }	
    
  6. 运行 webpack 命令进行打包,会发现,根据 index.html 生成了打包后的 HTML 文件,并且对其进行了压缩。
    请添加图片描述

HtmlWebpackPlugin 插件常见的配置选项:

  1. template:根据指定的 HTML 文件生成打包后的 HTML 文件。
  2. title:自动生成的 HTML 文件的 <title> 标签的值。默认是 Webpack App。
  3. inject:是否将打包后的 JS 文件、CSS 文件等自动引入到打包后的 HTML 文件中。默认值为 true。
    常见的属性值有:
    • true:将打包后的 JS 文件、CSS 文件等自动引入到打包后的 HTML 文件中,都在 <head> 中。
    • false:不将打包后的 JS 文件、CSS 文件等引入到打包后的 HTML 文件中。
    • head:将打包后的 JS 文件、CSS 文件等自动引入到打包后的 HTML 文件的 <head> 中。
    • body:将打包后的 JS 文件自动引入到打包后的 HTML 文件的 <body> 中,CSS 文件等还是自动引入到打包后的 HTML 文件的 <head> 中。
  4. cache:是否使用缓存。如果设置为 true,当文件没有发生任何改变时,将直接使用之前的缓存。
  5. minify:是否对 HTML 文件中的代码进行压缩和优化。
    常见的属性值有:
    • true:对 HTML 文件中的代码进行压缩和优化。
    • false:不对 HTML 文件中的代码进行压缩和优化。
    • 对象:
      • removeComments:是否移除HTML 文件中的注释。
      • removeRedundantAttributes:是否移除 HTML 元素上多余的属性。
      • removeEmptyAttributes:是否移除 HTML 元素上属性值为空的属性。
      • collapseWhitespace:是否折叠HTML 文件中的空格。
      • minifyCSS:是否对 HTML 文件中的内联样式和内部样式表进行压缩。
      • minifyJS:是否对 HTML 文件中事件定义方式和嵌入式的 JS 代码进行压缩。属性值为布尔值或者对象,如果是对象,还可以进一步进行配置。

        minifyJS 是利用 Terser 来进行压缩和丑化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值