webpack常用插件汇总

汇总

  • 文件处理上


1、HtmlWebpackPlugin

包名:html-webpack-plugin

该插件将为你生成一个 HTML 文件, 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle。
官方传送门


2、CleanWebpackPlugin

包名:clean-webpack-plugin

用于在打包前清理上一次项目生成的 bundle文件。默认情况下,此插件将删除webpack的Output.Path目录中的所有文件,以及在每次成功重建后所有未使用的webpack资源(assets)。如果使用的webpack版本是 4 以上的,默认 清理 <PROJECT_DIR>/dist/下的文件。
官方传送门


3、MiniCssExtractPlugin

包名:mini-css-extract-plugin

将 css 成生文件,而非内联 。该插件的主要是为了抽离 css 样式,防止将样式打包在 js 中引起页面样式加载错乱的现象。支持按需加载 css 和 sourceMap
官方传送门


4、HotModuleReplacementPlugin

包名:HotModuleReplacementPlugin

webpack 自带。在对CSS / JS文件进行修改时,可以立即更新浏览器(部分刷新)。依赖于 webpack-dev-server
官方传送门


5、ImageminPlugin

包名:imagemin-webpack-plugin

批量压缩图片。
官方传送门


6、PurifyCSSPlugin

包名:purifycss-webpack

从CSS中删除未使用的选择器(删除多余的 css 代码)。extract-text-webpack-plugin 一起使用
官方传送门


7、OptimizeCSSAssetsPlugin

包名:optimize-css-assets-webpack-plugin

压缩css文件。
官方传送门


8、CssMinimizerPlugin

包名: css-minimizer-webpack-plugin

压缩css文件。**用于 webpack 5 **。
官方传送门


9、UglifyJsPlugin

包名:uglifyjs-webpack-plugin

压缩js文件。
官方传送门


10、ProvidePlugin

包名:ProvidePlugin

webpack 自带。自动加载模块,而不必在任何地方importrequire它们。例如:new webpack.ProvidePlugin({$: 'jquery',React: 'react'})
官方传送门


11、SplitChunksPlugin

包名:-

webapck配置中的optimization字段中配置。cacheGroups 是关键,将文件提取打包成公共模块,像 抽取 node_modules里的文件。
官方传送门


12、CompressionPlugin

包名:compression-webpack-plugin

启用 gzip 压缩。
官方传送门


13、CopyWebpackPlugin

包名: copy-webpack-plugin

将已存在的单个文件或整个目录复制到构建目录中。多用于 将静态文件 因在打包时 webpack 并不会帮我们拷贝到 dist 目录 拷贝到 dist 目录
官方传送门


14、DefinePlugin

包名:DefinePlugin

webpack 自带。设置全局变量。如:new webpack.DefinePlugin({'process.env.NODE_ENV': JSON.stringify('production')})
官方传送门


  • 打包速率上


1、DllPlugin

包名:DllPlugin

webpack 自带dllplugindllreferenceplugin提供了拆分捆绑包的方法,这些方式可以大大提高构建时间性能。
官方传送门


2、DLLReferencePlugin

包名:DLLReferencePlugin

webpack 自带。它引用了仅需要预先构建的依赖项的 DLL-only-Bundle
官方传送门


3、ParallelUglifyPlugin

包名:webpack-parallel-uglify-plugin

开启多个子进程,把对多个文件压缩的工作分别给多个子进程去完成。减少构建时间。
官方传送门


4、HappyPack

包名:happypack

让 webpack 把任务分解给多个子进程去并发的执行,子进程处理完后再把结果发送给主进程。提升 构建 速度
官方传送门

明细

1、html-webpack-plugin


该插件将为你生成一个 HTML5 文件, 在 body 中使用 script 标签引入你所有 webpack 生成的 bundle
官方传送门

  • 用法
# Webpack 5
npm install --save-dev html-webpack-plugin
yarn add --dev html-webpack-plugin

# Webpack 4
npm i --save-dev html-webpack-plugin@4
yarn add --dev html-webpack-plugin@4
// webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  plugins: [new HtmlWebpackPlugin()],
};
  • option
名称 类型 默认值 描述
title String Webpack App 用于生成的HTML文档的标题
filename String | Function 'index.html' 写入HTML的文件。可以指定一个子目录(例如:assets / admin.html);也可以是个 函数 ,例如 (entryName)=> entryName +'.html'
template String - webpack模板的相对或绝对路径。 默认情况下,它将使用src / index.ejs(如果存在)
templateContent Boolean | Function | false false 可以代替模板来使用以提供内联模板
templateParameters Boolean | Object | Function false 允许覆盖模板中使用的参数。例子
inject Boolean | String true 值有: true || 'head' || 'body' || false
将所有 assets 注入给定的templatetemplateContent。 当传递body时,所有的javascript资源都将放置在body元素的底部head 会将脚本放置在head元素中。 传递true会根据scriptLoading选项将其添加到head/body。 传递false将禁用自动注入。
publicPath String | 'auto' 'auto' 用于 scriptlink标签的publicPath
scriptLoading 'blocking' | 'defer' 'defer' 现代浏览器支持非阻塞javascript加载(“延迟”)以提高页面启动性能
publicPath String | 'auto' 'auto' 用于 scriptlink标签的publicPath
favicon String - 将给定的favicon路径添加到输出HTML
meta Object {} 注入meta。例如:meta: {viewport: 'width=device-width, initial-scale=1, shrink-to-fit=no'}
base Object | String | false false 注入base标签。例如:base: "https://example.com/path/page.html"
minify Boolean | Object true if mode is 'production', otherwise false 控制是否以及以何种方式最小化输出。即 对 html 文件进行压缩
hash Boolean false 如果为true,则将webpack编译的hash值附加到所有包含的scriptcss文件中
cache Boolean true 仅在文件被更改时才生成一个新的文件
showErrors Boolean true 错误详细信息将写入HTML页面
chunks ? ? chunks 选项的作用主要是针对多入口(entry)文件。当你有多个入口文件的时候,对应就会生成多个编译后的 js 文件。那么 chunks 选项就可以决定是否都使用这些生成的 js 文件。
chunksSortMode String | Function 'auto' chunks包含到HTML中之前应如何对其进行排序。 允许的值是 'none' | 'auto' | 'manual' | Function
excludeChunks Array - 排除掉某些 js 文件
xhtml Boolean false 如果为true,则将link标签呈现为自动关闭(符合XHTML)



2、clean-webpack-plugin


用于在打包前清理上一次项目生成的 bundle文件。默认情况下,此插件将删除webpack的Output.Path目录中的所有文件,以及在每次成功重建后所有未使用的webpack资源(assets)
如果使用的webpack版本是 4 以上的,默认 清理 <PROJECT_DIR>/dist/下的文件
官方传送门

  • 用法
npm install --save-dev clean-webpack-plugin
// webpack.config.js
const { CleanWebpackPlugin }= require('clean-webpack-plugin');

module.exports = {
/* 如果使用的webpack版本是 **4** 以上的,默认 清理  <PROJECT_DIR>/dist/ 下的文件
 */
  plugins: [new CleanWebpackPlugin ()],
};
  • option
名称 类型 默认值 描述
dry Boolean false dry为true时,模拟删除,不会真的删掉文件
verbose Boolean false 为true时 显示日志, 当drytrue时,总是会打印日志
cleanStaleWebpackAssets Boolean true 自动删除未被使用的webpack资源
protectWebpackAssets Boolean true 不允许删除当前的webpack资源
cleanOnceBeforeBuildPatterns Array ['**/*'] 在Webpack编译之前删除一次文件。忽略的文件需要在开头加上 "!"号,数组中必须带有"**/*"通配符。此模式不安全的,因此要先在dry: true 下进行。
cleanAfterEveryBuildPatterns Array [] 在每次 build 后根据匹配规则 删除 文件 。忽略的文件需要在开头加上 "!"号,数组中必须带有"**/*"通配符。此模式不安全的,因此要先在dry: true 下进行。
dangerouslyAllowCleanPatternsOutsideProject Boolean false -

未完待续

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容