webpack系列之plugin及简单的使用
一.plugin有什么用
plugin
是webpack
核心功能,通过plugin(插件)webpack
可以实现loader
所不能完成的复杂功能,使用plugin
丰富的自定义API
,可以控制webpack
编译流程的每个环节,实现对webpack
的自定义功能扩展。
举例
我们实际项目中就使用了HtmlWebpackPlugin
插件,它帮助我们做了下面几件事儿:
- 在工程打包成功后会自动生成一个
html
模板文件 - 同时所依赖的
CSS/JS
也都会被自动引入到这个html
模板文件中 - 设置生成
hash
添加在引入文件地址的末尾,类似于我们常用的时间戳,来解决可能会遇到的缓存问题。
项目打包后生成的模板文件如下:
二.什么是plugin
plugin
是一个具有apply
方法的js
对象。apply
方法会被webpack
的compiler
(编译器)对象调用,并且compiler
对象可在整个compilation
(编译)生命周期内访问。
一个plugin
看起来大概是这个样子:
|
|
有兴趣对自定义插件感兴趣,想了解的更多的,可以看这里。
三.使用plugin
在 webpack
配置文件(webpack.config.js
)中,向 plugins
属性传入 new
实例即可。比如:
|
|
注意
webpack
中的插件分为内置插件和第三方插件- 内置插件不需要额外安装依赖,如上面的例子中:UglifyJsPlugin插件
- 如果是第三方插件,如上面的例子中HtmlWebpackPlugin插件,则使用之前需要进行安装:1npm install html-webpack-plugin --save-dev
四.案例
在对plugin
有了一个基本认识后,来做一个小案例:
“我想对所有的文件打包后添加一个版权声明”
目录结构
webpackPluginDemo
的目录结构如下:
├── app
├── package-lock.json
├── package.json
├── src
│ └── index.js
└── webpack.config.js
1. 安装webpack
在webpackPluginDemo
根目录下安装webpack:
1npm install --save-dev webpack
2.入口文件index.js
|
|
3.webpack
配置文件webpack.config.js
|
|
注意:BannerPlugin
为内置插件,如果是其它的外置插件,则需在使用前要先安装。
4.执行打包命令
|
|
5.查看结果
打包成功,可以看到app
目录下面已经生成了bundle.js
,打开bundle.js
会发现版权信息已经加上了:
五.常用插件
常用插件
- BannerPlugin:对所有的文件打包后添加一个版权声明
- uglifyjs-webpack-plugin: 对JS进行压缩混淆
- HtmlWebpackPlugin:可以根据模板自动生成html代码,并自动引用css和js文件
- Hot Module Replacement:在每次修改代码保存后,浏览器会自动刷新,实时预览修改后的效果
- copy-webpack-plugin:通过Webpack来拷贝文件
- extract-text-webpack-plugin:将js文件和css文件分别单独打包,不混在一个文件中
- DefinePlugin 编译时配置全局变量,这对开发模式和发布模式的构建允许不同的变量时非常有用
- optimize-css-assets-webpack-plugin 不同组件中重复的css可以快速去重
- 更多可点击这里查看。