1. extract-text-webpack-plugin

webpack默认会将css当做一个模块打包到一个chunk中,extract-text-webpack-plugin的作用就是将css提取成独立的css文件

首先安装和引入:

const ExtractTextPlugin = require('extract-text-webpack-plugin');

注册:

new ExtractTextPlugin({filename: 'css/[name].css',
})

注册之后,还要在css的loader中使用:

{test: /\.css$/,use: ExtractTextPlugin.extract({use: ['css-loader','postcss-loader','less-loader'],fallback: 'vue-style-loader',  #使用vue时要用这个配置})
},

ExtractTextPlugin.extract参数解释:

use:指需要什么样的loader去编译文件,这里由于源文件是.css所以选择css-loader
fallback:编译后用什么loader来提取css文件
publicfile:用来覆盖项目路径,生成该css文件的文件路径

该插件的最新版最高支持webpack3,如果需要支持webpack4,这样安装

yarn add extract-text-webpack-plugin@next

2. CommonsChunkPlugin

CommonsChunkPlugin 主要是用来提取第三方库(如jQuery)和公共模块(公共js,css都可以),常用于多页面应用程序,生成公共 chunk,避免重复引用。

CommonsChunkPlugin 是webpack集成的优化插件,可以直接使用,使用方式:

{entry: {vendor: 'index.js'},plugins: [new webpack.optimize.CommonsChunkPlugin({name: ['vendor','runtime'],filename: '[name].js'}),]
}

参考地址:这里

webpack4已经移除了该插件,用 SplitChunksPlugin 替代

3. html-webpack-plugin

这个插件很重要,作用一是创建HTML页面文件到你的输出目录,作用二是将webpack打包后的chunk自动引入到这个HTML中

首先安装和引入:

const HtmlPlugin = require('html-webpack-plugin')

如果是单页面应用,用法很简单了:

new HtmlPlugin({filename: 'index.html',template: 'pages/index.html'
}

template 是模板文件的地址,filename 是根据模板文件生成的html的文件名

如果是多个html页面的话,就需要多次实例化HtmlPlugin。比如现在有index.html和login.html两个页面:

{entry: {index: './src/index.js',login: './src/login.js'},plugins: [new HtmlPlugin({filename: 'index.html',template: 'pages/index.html',excludeChunks: ['login'],chunksSortMode: 'dependency'},new HtmlPlugin({filename: 'login.html',template: 'pages/login.html',excludeChunks: ['index'],chunksSortMode: 'dependency'}]
}

需要着重关注两个参数:excludeChunkschunksSortMode

前面说了,该插件的作用二是将webpack打包后的chunk自动引入到生成的html中。上面的配置有两个入口文件,所以打包后会有index和login两个chunk,而在生成的两个html页面中都会引入这两个chunk。事实上一个html文件中只需要引入相应的chunk就够了,比如index.html只需要引入index的chunk。

excludeChunks就是解决上面问题的。其作用是指定生成的页面中不引入某个chunk,当然了还有一个chunks参数表示指定引入某个chunk。

多页面中一般会提取公共部分的chunk,这个时候一个html页面会引入多个chunk,而这些chunk之间是有依赖关系的。即必须按照顺序用script标签引入。chunksSortMode是用来指定这种顺序的排序规则。dependency是指按照依赖关系排序。

4. ModuleConcatenationPlugin

ModuleConcatenationPlugin插件用于开启 Scope Hoistng ,可以让打包出来的代码文件更小,运行更快!

ModuleConcatenationPlugin 是webpack集成的优化插件,可以直接使用,使用方式:

{resolve: {mainFields: ['jsnext:main','browser','main']},plugins: [new webpack.optimize.ModuleConcatenationPlugin()]
}

如果你使用webpack4,mode已经自动集成了

{mode: 'production'
}

【webpack】webpack 常用插件集合相关推荐

  1. webstorm常用插件集合(2020)

    CSDN 中文章可能更新不及时,请前往我的博客查看最新版 2016 年整理了一下自己常用的 webstorm 插件:webstorm常用插件集合 不过毕竟现在已经 2020 年了,常用的插件已经发生了 ...

  2. VSCode 前端常用插件集合

    Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱. 但工欲善其事必先利其器,以下是本人为前端开发收集的常用的vs ...

  3. vue 常用插件集合(最全)

    UI组件 element- 饿了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的组件库 mint-ui- Vue 2的移动UI元素 iview- 基于 Vuejs 的开源 UI ...

  4. webstorm 常用插件集合

    点击在我的博客 xuxusheng.com 中查看,有更好的排版哦~ File -> settings -> Plugins 即可调出设置中的插件选项. 或者直接快捷键 ctrl + al ...

  5. Eclipse 好用常用插件集合

    ExploreFS 一个可以快速转到工程所在的硬盘路径的插件. 安装完成后, 右键单击某个工程 会找到 Explore in File System 的菜单按钮 ExploreFS - http:// ...

  6. webstorm常用插件 最后一个最好

    摘要:ideaVimignoreeslintAceJumpKeyPromoterMarkdownAngularJSactivate-power-modeMaterialThemeUICodeGlanc ...

  7. webpack基础版及其常用插件分享超详细~~

    webpack的作用 打包.把多个文件打成个数更小的文件. 支持模块化 优化: 代码压缩,加密 掌握webpack的基本使用: 配置webpack.config.js 基本使用 入口 出口 loade ...

  8. webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server

    一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...

  9. webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server - QxQstar - 博客园

    一.webpack基础 1.在项目中生成package.json:在项目根目录中输入npm init,根据提示输入相应信息.(也可以不生成package.json文件,但是package.json是很 ...

最新文章

  1. 前端自动化构建工具webpack (二)之css和插件加载总结
  2. Sentinel 源码分析(一)
  3. vue从入门到精通之进阶篇(一)vue-router基础
  4. Samba平台搭建和用户自行修改密码环境搭建笔记
  5. jzoj3888-正确答案【字符串hash,dfs】
  6. StringUtils 的使用
  7. bzoj1974 [Sdoi2010]代码拍卖会 循环+背包
  8. spring mvc-基础-简单程序
  9. 如何让大数据分析更有效
  10. 力扣-1925 统计平方和三元组的数目
  11. MSSQL备份及数据迁移
  12. 在Apache环境下成功的运行ASP.NET
  13. 服务器系统安装蓝牙驱动,win10蓝牙驱动怎么安装?-win10蓝牙驱动的安装教程 - 河东软件园...
  14. java use g1_深入理解 Java G1 垃圾收集器
  15. oppo android多大内存,OPPO R15使用感受,大内存真的很有必要
  16. DFRobot的产品
  17. 二---------
  18. 探索Franka Emika 机器人丨Powertool和Franka world的作用
  19. 干货!Flask 动态展示 Pyecharts 图表数据的几种方法!
  20. 【二叉树】重建二叉树

热门文章

  1. Python如何连接Mysql及基本操作
  2. mysql 字段值不同枚举_【mysql】关于枚举值 '1','0'的神奇判断
  3. 黑马博客——详细步骤(一)路由跳转和抽取公共部分代码
  4. 21天Jmeter打卡合集之从入门到精通
  5. 21天JenkinsDay11 对某个job单独设置权限
  6. 21天Jmeter打卡Day11配置元件之CSV数据文件配置
  7. php自动关机代码,vb下的恶搞关机程序
  8. gogoclient java_链路跟踪-GRPC请求 - GoFrame官网 - 类似PHP-Laravel, Java-SpringBoot的Go企业级开发框架...
  9. 毕业生简单的用Python实现一个信息管理系统【含示例代码】
  10. DE21 Convolution Formula