webpack—plugin的用法及常用的plugin

本文介绍Webpack插件的基本用法及常见插件的应用,包括html-webpack-plugin和clean-webpack-plugin。通过示例展示了如何生成和定制HTML文件,以及如何清理输出目录。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

plugin有什么用处

插件也是webpack最强大的一个功能之一,插件可以实现很多loader无法完成的事情。他的工作其实是在打包构建的每个环节去添加对应生命钩子函数,并执行对应的钩子来对文件进行修改。如果说loader是实现模块化打包,那么plugin就是帮助我们构建自动化流程和优化的一个工具,比如自动清除代码,根据模板生成html文件,拷贝公共资源文件等

基本用法

plugin的使用非常简单,在配置中有一个pugins的属性,他是一个数组,每一个元素就是一个plugin,大多数情况下,plugin都是一个类

const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
  mode: 'none',
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin () // 大多数情况下plugin是一个类,对plugin进行实例化即可
  ]
}

这就是插件的基础用法,当然,我们也可以传递参数到构造函数内。

html-webpack-plugin

下面我们就html-webpack-plugin来说说具体的用法

零配置使用

首先我们试试不传递任何的参数

module.exports = {
  mode: 'none',
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin()
  ]
}

可以看到,webpack帮我们生成了一个对应的html文件,并且将生成的js文件嵌入到该html中。这样做的好处是,我们不需要每次都去修改我们的页面的js文件的地址去进行测试,可以直接在dist目录下开启web服务即可进行开发测试。
在这里插入图片描述

传递参数来定义html文件的内容

同样的我们还可以传递对应的参数到构造函数内来定义生成的html文件内的内容,如标题,meta标签等。

module.exports = {
  mode: 'none',
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'custom.html',
      title: 'webpack pages',
      meta: {
        viewport: 'user-scalable=no'
      }
    })
  ]
}

可以看到,我们定义的一些属性已经生效了,这个不详细展示,有兴趣可以到官方文档去查询一下,因为这种模式不是特别推荐
在这里插入图片描述

根据模板生成html文件

更为常用的生成html文件的方式是通过模板来生成,这样更加方便,易于使用。用法也非常的简单,我们只需要制定一个模板的路径即可

module.exports = {
  mode: 'none',
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './template.html'
    })
  ]
}

这样,webpack会根据模板生成对应的html文件,并嵌入script标签
在这里插入图片描述

添加模板参数

有时候我们希望模板的参数可以通过变量来控制,这个时候我们就可以使用templateParameters来定义对应的参数,然后再模板中使用ejs语法即可<%= 变量名 %>

module.exports = {
  mode: 'none',
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './template.html',
      templateParameters: {
        msg: '这是模板的参数'
      }
    })
  ]
}

最终执行结果
在这里插入图片描述
html-webpack-plugin还有其他的属性,这里就不一一列举,有兴趣可以去官网看一下

clean-webpack-plugin

从名称我们就能看出,这是一个清除的插件,主要目的就是清除上一次打包的dist目录,用法也非常简单。因为webpack只会帮我们覆盖同名的文件,所以如果不清除上一次打包生成的目录,则有可能产生垃圾文件

module.exports = {
  mode: 'none',
  entry: './src/main.js',
  output: {
    filename: 'bundle.js',
    path: path.join(__dirname, 'dist')
  },
  plugins: [
    new CleanWebpackPlugin(),
    new HtmlWebpackPlugin({
      filename: 'index.html',
      template: './template.html',
      templateParameters: {
        msg: '这是模板的参数'
      }
    })
  ]
}

假如现在打包前有一个垃圾文件,然后我们启动webpack
在这里插入图片描述
打包后可以看到垃圾文件被清除了
在这里插入图片描述


以上内容仅供学习参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值