解决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 相关文章推荐
对xmlHttp对象的理解
Jan 17 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
onkeypress字符按键兼容所有浏览器使用介绍
Apr 24 Javascript
js实现checkbox全选和反选示例
May 01 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
BootStrap CSS全局样式和表格样式源码解析
Jan 20 Javascript
jQuery源码分析之sizzle选择器详解
Feb 13 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 Javascript
javascript计算对象长度的方法
Oct 25 Javascript
微信小程序实现弹出层效果
May 26 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
解决element-ui的下拉框有值却无法选中的情况
Nov 07 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
如何对PHP程序中的常见漏洞进行攻击(上)
2006/10/09 PHP
php中取得文件的后缀名?
2012/02/20 PHP
php读取excel文件的简单实例
2013/08/26 PHP
Windows7下的php环境配置教程
2015/02/28 PHP
/etc/php-fpm.d/www.conf 配置注意事项
2017/02/04 PHP
PHP超低内存遍历目录文件和读取超大文件的方法
2019/05/01 PHP
jquery 学习之二 属性(类)
2010/11/25 Javascript
JS实现距离上次刷新已过多少秒示例
2014/05/23 Javascript
JavaScript验证Email(3种方法)
2015/09/21 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
js将键值对字符串转为json字符串的方法
2018/03/30 Javascript
jquery无缝图片轮播组件封装
2020/11/25 jQuery
layui lay-verify form表单自定义验证规则详解
2019/09/18 Javascript
手机浏览器唤起微信分享(JS)
2020/10/11 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
在Python的Django框架中用流响应生成CSV文件的教程
2015/05/02 Python
十个Python程序员易犯的错误
2015/12/15 Python
Django中的Model操作表的实现
2018/07/24 Python
基于tensorflow加载部分层的方法
2018/07/26 Python
Python中的 enum 模块源码详析
2019/01/09 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
用canvas做一个DVD待机动画的实现代码
2019/04/12 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
自我鉴定 电子商务专业
2014/01/30 职场文书
平面设计求职信
2014/03/10 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
2015元旦晚会主持词(开场白+结束语)
2014/12/14 职场文书
班主任开场白
2015/06/01 职场文书
离职信范文
2015/06/23 职场文书
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
MySQL索引知识的一些小妙招总结
2021/05/10 MySQL
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
python之django路由和视图案例教程
2021/07/26 Python