webpack的plugin

 webpack的plugin

 

plugin插件用于扩展webpack的功能的扩展,例如打包时候优化,文件压缩。

 

**loader和plugin的区别**

 

loader主要用于转化某些类型的模块,是一个转化器。

 

plugin主要是对webpack的本身的扩展,是一个扩展器。

 

**plugin的使用过程**

 

步骤一:通过npm安装需要使用的plugins(某些webpack已经内置的插件不需要在安装)

 

步骤二:在**webpack.config.js**中的plugins中配置插件。

 

> 准备工作
>
> 复制04-webpack的vue到同级目录,并改名为05-webpack的plugin

 

  添加版权的Plugin

 

BannerPlugin插件是属于webpack自带的插件可以添加版权信息。

 

自带的插件无需安装,直接配置。

 

先获取webpack的对象,在配置BannerPlugin插件。

 

```javascript
//获取webpack
const webpack = require('webpack')
//2.配置plugins
module.exports = {
    ...
    plugins:[
        new webpack.BannerPlugin('最终解释权归zz所有')
      ]
}
```

 

 
打包后,查看bundle.js,结果如图所示:

 

多了一行我们自定义的版权声明注释。

 

###  打包html的plugin

 

之前我们的index.html文件都是存放在根目录下的。

 

在正式发布项目的时候发布的是dist文件夹的内容,但是dist文件夹是没有index.html文件的,那么打包就没有意义了。

 

所以我们需要将index.html也打包到dist文件夹中,这就需要使用**`HtmlWebpackPlugin`**插件了。

 

> **`HtmlWebpackPlugin`**:
>
> 自动生成一个index.html文件(指定模板)
>
> 将打包的js文件,自动同script标签插入到body中

 

首先需要安装**`HtmlWebpackPlugin`**插件

 

```shell
npm install html-webpack-plugin --save-dev  
```

 

使用插件,修改webpack.config.js文件中的plugins部分

 

```javascript
//获取htmlWebpackPlugin对象
const htmlWbepackPlugin = require('html-webpack-plugin')
//2.配置plugins
module.exports = {
    ...
    plugins:[
        new webpack.BannerPlugin('最终解释权归zz所有'),
        new htmlWbepackPlugin({
          template: 'index.html'
        })
      ]
}
```

 

> 1.template表示根据哪个模板来生成index.html
>
> 2.需要删除output中添加的publicPath属性,否则插入的script标签的src可能有误

 

再次打包,打开dist文件夹,多了一个index.html

 

自动加入了script引入了bundle.js。

 

### 压缩打包代码插件

 

uglifyjs-webpack-plugin是第三方插件,如果是vuecli2需要指定版本1.1.1。

 

安装:

 

```shell
npm install uglifyjs-webpack-plugin@1.1.1 --save-dev
```

 

配置plugin

 

```javascript
//获取uglifyjs-webpack-plugin对象
const uglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin')
//2.配置plugins
module.exports = {
    ...
    plugins:[
        new webpack.BannerPlugin('最终解释权归zz所有'),
        new htmlWbepackPlugin({
          template: 'index.html'
        }),
      new uglifyjsWebpackPlugin()
      ]
}
```

 

打包过后,打开bundle.js,发现已经压缩了,此时版权声明被删除了。
> webpack高版本自带了压缩插件。

 

posted @ 2021-05-13 11:15  好吗,好  阅读(82)  评论(0)    收藏  举报