解决webpack打包速度慢的解决办法汇总


Posted in Javascript onJuly 06, 2017

刚开始用webpack,谈一谈解决webpack打包慢的问题的方法

技巧1

webpack在打包的时候第一次总是会做很长的准备工作,包括加载插件之类的。在刚接触webpack的时候总是webpack一下-测一下-改一下-再webpack一下,这种方式最后让很多人崩溃了觉得webpack一点都不好用。其实这是错误的使用方式。

正确的方式应直接执行webpack --watch 这样webpack会自动编译,第一回的时候确实很慢,但之后的自动编译就要快了好多,打包时间相差几倍。

技巧2

webpack配合的React,jQuery一些共有的库去使用,虽然没写几行代码却发现我靠打个文件居然好几M了。能不能不让这些共有库打入我们的文件呢?

externals: 
    {
      'antd':true,
      'react': 'React',
      'react-dom': 'ReactDOM'
    }

在webpack配置文件的根上加上这些内容。告诉webpack在require(“react”)的时候不要去加载模块,直接去读(这里还不是很明白,有的说“:”后面是window.React,写了后面可以直接使用无需require,待确定后再补充,一般写true就可以了),当然这种方式要在html入口手动引入js文件:

<script src="node_modules/react/dist/react-with-addons.js"></script>
<script src="node_modules/react-dom/dist/react-dom.min.js"></script>
<script src="node_modules/antd/dist/antd.min.js"></script>

在项目中正常使用require(“react”)试试,不会被打进去了,文件变为了几k,突然感觉webpack这东西还是能用的。

技巧3

大部分情况下通过技巧2已经可以搞定大部分问题了,但是在用MaterialUI的时候,点击事件总是报一个错误,大概意思是重复的引入了react什么的。如果出现这个问题,那么请使用技巧3。将那些共有的模块打进另外一个文件中,然后使用CommonsChunkPlugin插件,在webpack ?watch非第一编打包的时候就不会重复的打另外一个文件了。

entry: {
    //这是我自己文件的入口,换成自己的
    main: './apps/main.jsx',
    //这个是把外面的东西打包成common.js
    'common':['./node_modules/react/dist/react-with-addons.min.js','./node_modules/react-dom/dist/react-dom.min.js']

  },
plugins: [
    //把common.js变为共有的,除第一遍打包后就不会再打包了
    new webpack.optimize.CommonsChunkPlugin('common', 'common.js')
  ]
output: {
    path: path.resolve(containerPath,'dist/'),
    filename: '[name].js'
  }

在webpack配置文件的根上加上这些内容,在html入口处需要引入common.js

//确认一下是不是第一回打包后这个文件已经有了
<script src="dist/common.js"></script>

这种方式在webpack -watch后第一遍依旧很慢(因为要打common) 之后修改默认打包是就不会再打common了。而且还有一个优点就是不用再引React,jquery一堆文件了,只引common一个文件就ok。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Dojo 学习笔记入门篇 First Dojo Example
Nov 15 Javascript
jquery等宽输出文字插件使用介绍
Sep 18 Javascript
IE8中动态创建script标签onload无效的解决方法
Dec 22 Javascript
javascript html5移动端轻松实现文件上传
Mar 27 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
带有定位当前位置的百度地图前端web api实例代码
Jun 21 Javascript
js每隔两秒输出数组中的一项(实例)
May 28 Javascript
ES6扩展运算符用法实例分析
Oct 31 Javascript
详解VUE2.X过滤器的使用方法
Jan 11 Javascript
JS实现简单的抽奖转盘效果示例
Feb 16 Javascript
原生JavaScript实现的无缝滚动功能详解
Jan 17 Javascript
查找Vue中下标的操作(some和findindex)
Aug 12 Javascript
详解微信小程序Radio选中样式切换
Jul 06 #Javascript
Node.js 回调函数实例详解
Jul 06 #Javascript
详解vue渲染从后台获取的json数据
Jul 06 #Javascript
微信小程序 Buffer缓冲区的详解
Jul 06 #Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 #Javascript
vue-cli如何添加less 以及sass
Jul 06 #Javascript
微信小程序 跳转传递数据的实例
Jul 06 #Javascript
You might like
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
如何用php获取程序执行的时间
2013/06/09 PHP
php生成随机字符串可指定纯数字、纯字母或者混合的
2014/04/18 PHP
基于PHP的简单采集数据入库程序【续篇】
2014/07/30 PHP
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
Ext中下拉列表ComboBox组件store数据格式用法介绍
2013/07/15 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
js简单网速测试方法完整实例
2015/12/15 Javascript
js实现input密码框提示信息的方法(附html5实现方法)
2016/01/14 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
基于JavaScript实现弹幕特效
2020/08/27 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
nodejs基于express实现文件上传的方法
2018/03/19 NodeJs
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
pyramid配置session的方法教程
2013/11/27 Python
利用Python演示数型数据结构的教程
2015/04/03 Python
Python中实现三目运算的方法
2015/06/21 Python
Python3爬虫学习之应对网站反爬虫机制的方法分析
2018/12/12 Python
Python字典的核心底层原理讲解
2019/01/24 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
奥地利领先的在线药房:SHOP APOTHEKE
2019/10/07 全球购物
linux面试题参考答案(11)
2016/11/26 面试题
《理想》教学反思
2014/02/17 职场文书
2015年乡镇纪检工作总结
2015/04/22 职场文书
婚礼伴郎致辞
2015/07/28 职场文书
导游词之日本富士山
2020/01/06 职场文书
Python&Matlab实现樱花的绘制
2022/04/07 Python
什么是clearfix (一文搞清楚css清除浮动clearfix)
2023/05/21 HTML / CSS